2011-11-14 18 views
8

के बारे में कम डेटा देता है मैं एक partner collection है और मैं pymongo उपयोग कर रहा हूँ जब मैं साथ संग्रह क्वेरी MongoDB डेटा
पुनः प्राप्त करने, मैं देख रहा हूँ निम्न परिणामpymongo()) को खोजने बनाम MongoDB खोज (मिल pymongo() दस्तावेज़

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{}) 
{ "_id" : ObjectId("4eb463cb158acb554e8c9c11"), "unique_key" : "c89dbe313932008febde61cdd2a071a1d", "name" : "ABC", "primary_key" : 12 } 

लेकिन जब मैं pymongo के माध्यम से क्वेरी, यहाँ मैं

for document in collection.find(find, criteria): 
    print document 

where find = {'unique_key': 'c89dbe313932008febde61cdd2a071a1d'} and 
     criteria = {} 

उसे क्या करना है

{u'_id': ObjectId('4eb463cb158acb554e8c9c11')} 

और मैं नाम और कुछ primary_key परिणाम में, मुझे याद आ रही नहीं मिलता है: ई मैं क्या परिणाम में देखते हैं?

आप

उत्तर

12

ऐसा लगता है कि जब आप खाली शब्दकोश पारित (आपका criteria वैरिएबल) दूसरे पैरामीटर के रूप में इसका मतलब है कि आप कोई फ़ील्ड वापस नहीं करना चाहते हैं (_id को छोड़कर जो हमेशा वापस आ जाता है)। find() के लिए दूसरा पैरामीटर फ़ील्ड को परिभाषित करता है जो आप चाहते हैं। criteria=None सेट करने का प्रयास करें या criteria पास न करें।

Linkfind() के लिए pymongo दस्तावेज़ में।

+0

सही उत्तर! – daydreamer

3

धन्यवाद इस तरह MongoDB खोल एक फ़ील्ड चयनकर्ता बनाम कैसे pymongo एक खाली शब्दकोश की व्याख्या के रूप में व्याख्या {} के कारण है। संक्षेप में, खोल खाली वस्तु को क्षेत्र चयनकर्ता के रूप में अनदेखा करता है, जबकि पिमोंगो इसे "कुछ भी वापस नहीं लौटाता है (_id के डिफ़ॉल्ट को छोड़कर)"।

आपको पिमोंगो या मोंगोडब खोल का उपयोग करते समय फ़ील्ड चयनकर्ता निर्दिष्ट करने की आवश्यकता नहीं है (आप इसे खाली छोड़ सकते हैं)। इस प्रकार, खोल में इस बयान:

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{}) 

बराबर है करने के लिए:

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'}) 

(इस बयान दोनों खोल और pymongo में काम करेंगे)

+0

अद्भुत व्याख्या के लिए धन्यवाद – daydreamer

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