2017-07-10 13 views
5

के बराबर नहीं है, मैं उन सभी दस्तावेजों को खोजने का प्रयास कर रहा हूं जहां ईमेल मौजूद है।क्वेरी जहां शून्य या खाली

{ "email": {$exists:true, $ne:null, $ne:""}} 

फिर भी मैं हो रही है दस्तावेजों जहां ईमेल null है:

मैं निम्नलिखित खोज क्वेरी कोशिश कर रहा हूँ।

क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं?

+0

धन्यवाद बहुत दोस्त! इसने काम कर दिया। यहां तक ​​कि मुझे एक ही चीज़ पर संदेह था जैसे ही मैंने सवाल पोस्ट किया कि यह दो डॉलर की वजह से किसी भी तरह से है। –

उत्तर

7

आप $nin यहाँ हैं:

.find({ "email": { "$nin": [ null, "" ] } }) 

समस्या है $ne दो बार दोहराए गए और अधिलेखित कर देता है। आप इस्तेमाल कर सकते हैं $or लेकिन $nin कम है:

को देखते हुए:

{ 
    "_id" : ObjectId("59633c28f5f11516540d118e"), 
    "a" : 1.0 
} 
{ 
    "_id" : ObjectId("59633c28f5f11516540d118f"), 
    "a" : 1.0, 
    "email" : "" 
} 
{ 
    "_id" : ObjectId("59633c28f5f11516540d1190"), 
    "a" : 1.0, 
    "email" : null 
} 
{ 
    "_id" : ObjectId("59633c28f5f11516540d1191"), 
    "a" : 1.0, 
    "email" : "fred" 
} 

बस रिटर्न:

{ 
    "_id" : ObjectId("59633c28f5f11516540d1191"), 
    "a" : 1.0, 
    "email" : "fred" 
} 

इसके अलावा, आप भी जब आप वास्तव में एक मूल्य का परीक्षण कर रहे $exists जरूरत नहीं है। यह पहले से ही निहित है कि "अस्तित्व" है।

संबंधित मुद्दे