MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

सरणी वाले दस्तावेज़ ढूंढें जिनमें कोई विशिष्ट मान नहीं है

आप जो मूल रूप से प्रयास कर रहे हैं, उसमें कुछ भी गलत नहीं है, लेकिन शायद यहां एकमात्र स्पष्टीकरण आम गलत धारणा है कि आपको $nin जैसे ऑपरेटरों की आवश्यकता है। या $in किसी सरणी को क्वेरी करते समय।

इसके अलावा आपको यहां वास्तव में $ne . के साथ एक बुनियादी असमानता मिलान करने की आवश्यकता है :

Person.find({ "groups": { "$ne": group._id } })

"सरणी" ऑपरेटर "सरणी लक्ष्य" के लिए नहीं बल्कि सुविधाजनक रूप में परीक्षण करने के लिए शर्तों की "सूची" प्रदान करने के लिए हैं।

Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })

तो केवल एकल स्थितियों के लिए सामान्य ऑपरेटरों का उपयोग करें, और $in save बचाएं और $nin जहां आप किसी एकल मान या सूची के विरुद्ध एक से अधिक शर्तों का परीक्षण करना चाहते हैं। तो यह बिल्कुल उल्टा है।

यदि आपको तर्कों की "सूची" पारित करने की आवश्यकता है, जहां प्रदान की गई सूची में से "कोई नहीं" सरणी की सामग्री से मेल खाता है तो आप तर्क को $not के साथ उलट देते हैं ऑपरेटर और $all ऑपरेटर:

Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })

तो इसका मतलब है कि प्रदान की गई "कोई भी सूची" सरणी में मौजूद नहीं है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodump का उपयोग करके एक MongoDB डेटाबेस का बैकअप लें

  2. MongoDB अलग कमांड

  3. आप node.js में MongoDB अनुक्रमणिका के लिए जावास्क्रिप्ट ऑब्जेक्ट में गुणों का क्रम कैसे निर्दिष्ट कर सकते हैं?

  4. एसएसएल के लिए स्व-हस्ताक्षरित प्रमाणपत्रों के साथ मोंगोडीबी को रूबी से जोड़ना

  5. एक MongoDB सरणी में डुप्लिकेट मान ढूँढना