2013-03-27 6 views
12

से मोंगो में किसी मौजूदा दस्तावेज़ पर एक नया फ़ील्ड कैसे डालें I pymongo के साथ एक क्वेरी के परिणाम पर पाइथन में लूप के लिए एक लूप का उपयोग कर रहा हूं। यहाँ कोड है:पायथन + पिमोंगो: लूप

from pymongo import MongoClient 
connection = MongoClient() 
db = connection.Test 

myDocs = db.Docs.find({ "geolocCountry" : { "$exists" : False } }) 

for b in myDrives: 
    my_lat = b['TheGpsLog'][0]['latitude'] 
    my_long = b['TheGpsLog'][0]['longitude'] 

    myGeolocCountry = DoReverseGeocode(lat_start,long_start) 
    # Here I perform a reverse geocoding, it does not matter for this example. 
    # The important thing is: it returns a string, like 'US', 'UK', etc... 

सवाल मेरे पास है है, मैं कैसे चर myGeolocCountry गैर मौजूदा क्षेत्र geolocCountry में मौजूदा दस्तावेज़ (b) पर सम्मिलित कर सकते हैं?

मैं

b['geolocCountry'] = myGeolocCountry 

साथ करने की कोशिश की, लेकिन यह काम नहीं किया बिल्कुल, यह भी एक त्रुटि का उत्पादन नहीं करता।

धन्यवाद

उत्तर

12

आप इस तरह एक अद्यतन क्वेरी को निष्पादित करना चाहिए:

db.Doc.update({"_id": b["_id"]}, {"$set": {"geolocCountry": myGeolocCountry}}) 
+0

मैं इस सू की कोशिश करेंगे एन, धन्यवाद – otmezger

+0

यह काम किया, आपके समाधान की एक छोटी गलती है, था। '" myGeolocCountry "को '' 'की आवश्यकता नहीं है क्योंकि यह एक चर है :-) धन्यवाद – otmezger

2

आप अपने संग्रह में रिकॉर्ड अपडेट करने के लिए समारोह update() उपयोग करना होगा।

अपडेट के साथ

, जैसा कि आपने collection.find() के साथ ऊपर है, लेकिन यह भी एक दूसरे dict परिभाषित करता है कि आप कैसे दस्तावेजों क्वेरी में पाया अद्यतन करना चाहते कुछ की तरह प्रदान करते हैं आप एक प्रश्न निर्दिष्ट कर सकते हैं (:।

db.Docs.update({"geolocCountry":{"$exists":False}}, {"$set": "geolocCountry": myGeolocCountry}) 

बहस के आराम के लिए एपीआई की जाँच करें।

0

अपडेट के बाद संग्रह बचाने की जरूरत है।

for b in myDrives: 
    my_lat = b['TheGpsLog'][0]['latitude'] 
    my_long = b['TheGpsLog'][0]['longitude'] 

    myGeolocCountry = DoReverseGeocode(lat_start,long_start) 

    b['geolocCountry'] = myGeolocCountry 
    **db.Docs.save(b)** 
संबंधित मुद्दे