MongoDB के बराबर नहीं


102

मैं MongoDB में एक क्वेरी प्रदर्शित करने की कोशिश कर रहा हूँ जहाँ एक पाठ फ़ील्ड '' (रिक्त) नहीं है

{ 'name' : { $not : '' }}

हालाँकि मुझे त्रुटि मिलती है invalid use of $not

मैंने दस्तावेज़ीकरण पर ध्यान दिया है लेकिन वे जिन उदाहरणों का उपयोग करते हैं वे जटिल मामलों के लिए हैं (regexp के साथ और $notदूसरे ऑपरेटर को नकारने के लिए)।

मैं जिस साधारण चीज़ को करने की कोशिश कर रहा हूँ, वह मैं कैसे करूँगा?

जवाबों:


147

उपयोग $ne- $notमानक ऑपरेटर द्वारा पीछा किया जाना चाहिए:

इसके लिए एक उदाहरण $ne, जो न के बराबर है:

use test
switched to db test
db.test.insert({author : 'me', post: ""})
db.test.insert({author : 'you', post: "how to query"})
db.test.find({'post': {$ne : ""}})
{ "_id" : ObjectId("4f68b1a7768972d396fe2268"), "author" : "you", "post" : "how to query" }

और अब $not, जो विधेय में लेता है ( $ne) और इसे नकारता है ( $not):

db.test.find({'post': {$not: {$ne : ""}}})
{ "_id" : ObjectId("4f68b19c768972d396fe2267"), "author" : "me", "post" : "" }

4
उन उत्सुक लोगों के $neलिए "बराबर नहीं" को संदर्भित करता है।
अब्राहम

1
इस जवाब में बड़ी संख्या में वोट हैं, लेकिन स्पष्टीकरण बहुत अस्पष्ट है। उदाहरण में क्या हो रहा है जिसमें $ नहीं और $ ne दोनों हैं?
GaTechThomas

इतने कम में $not :{ $neसाधन $eq, इस है कि तुम क्या कहने की कोशिश कर रहे थे?
अनु ०



10

से मोंगो डॉक्स :

$notऑपरेटर केवल अन्य ऑपरेटरों को प्रभावित करता है और स्वतंत्र रूप से खेतों और दस्तावेजों की जांच नहीं कर सकते हैं। तो, $notतार्किक विघटन के लिए ऑपरेटर का उपयोग करें और $neसीधे खेतों की सामग्री का परीक्षण करने के लिए ऑपरेटर।

चूंकि आप सीधे क्षेत्र का परीक्षण कर रहे हैं, इसलिए $neयहां उपयोग करने के लिए सही ऑपरेटर है।

संपादित करें:

ऐसी स्थिति जहां आप उपयोग करना चाहते हैं $not:

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

वह सभी दस्तावेजों का चयन करेगा जहां:

  • मूल्य क्षेत्र का मूल्य 1.99 या मूल्य से कम या बराबर है
  • फील्ड मौजूद नहीं है

3

अगर nullकिसी एरे में है और आप इससे बचना चाहते हैं:

db.test.find({"contain" : {$ne :[] }}).pretty()

1

वास्तविक जीवन उदाहरण; वर्तमान उपयोगकर्ता नहीं बल्कि सभी खोजें:

var players = Players.find({ my_x: player.my_x,  my_y: player.my_y, userId: {$ne: Meteor.userId()} }); 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.