मैं एक मोंगोडीबी नौसिखिया हूं और पूछना चाहता हूं कि अपरर्ट और सूची से जुड़े एक अद्यतन कमांड को कैसे लिखना है।मोंगो डीबी - सूचियों को शामिल करने वाले अप्सर्ट
{"_id" : ObjectId("4c28f62cbf8544c60506f11d"),
"some_other_data":"goes here",
"trips": [
{"name": "2010-05-10",
"loc": [{"lat":21.321231, "lng": 16.8783234, "updated_at": "Mon May 10 2010 15:24:35"},
{"lat":21.321231, "lng": 16.8783234, "updated_at": "Mon May 10 2010 15:24:24"}]
},
{"name": "2010-05-08",
"loc": [{"lat":21.324239, "lng": 16.8735234, "updated_at": "Mon May 8 2010 11:18:05"},
{"lat":21.311234, "lng": 16.8743271, "updated_at": "Mon May 8 2010 11:17:55"},
{"lat":21.321238, "lng": 16.8782219, "updated_at": "Mon May 8 2010 11:17:45"}]
}
]}
ध्यान दें कि:
असल में मैं कुछ इस तरह करना चाहते
- आप एक यात्रा नाम और वर्तमान स्थान
- आपूर्ति यात्रा पहले से ही मौजूद नहीं है, यह बनाने की आवश्यकता है
- trips.name अद्वितीय होना चाहिए ताकि यदि यह exis हो ts, आप स्थान सरणी
यह क्वेरी है जिसे मैंने $ push के साथ स्थितित्मक ऑपरेटर को संयोजित किया था।
db.mycollection.update({"application_id": "MyTestApp",
"trips.name": "2010-05-10"},
{$push: {'trips.$.loc': {"lat":11, "lng":11} }},
true);
लेकिन यह इस तरह डेटा में परिणाम:
> db.mycollection.find({"application_id":"MyTestApp"})
{ "_id" : ObjectId("4c29044ebf8544c60506f11f"),
"application_id" : "MyTestApp",
"trips" : { "$" : { "loc" : [ { "lat" : 11, "lng" : 11 } ] },
"name" : "2010-05-10" }
}
आप देख सकते हैं कि
- "यात्राएं" एक सरणी
- ले लिया "$" सचमुच इसे नहीं बनाया है उस के साथ कुंजी (doh!)
अब तक मैं मोंगोडीबी के साथ बहुत खुश हूं, लेकिन जटिल प्रश्न लिखने के साथ निश्चित रूप से एक सीधी सीखने की वक्र है।
किसी भी प्रतिक्रिया की सराहना की जाएगी।
अग्रिम धन्यवाद, Amie
फिर से नीचे मेरा उत्तर जाँच - मैं शामिल करने के लिए कि मैं क्या समाधान (या कम से कम कुछ है कि आप बहुत करीब मिलना चाहिए होने के लिए विश्वास है कि यह संपादित) – nearlymonolith
यह [SO थ्रेड] देखें (http://stackoverflow.com/questions/17994552/mongodb-update- दस्तावेज़-in-an-array/17995495#17995495)। कुछ इसी तरह के समान है। – user10