मुझे लगता है कि आप जो चाहते हैं वह $addToSet कमांड है - जो किसी तत्व को केवल तभी धक्का देगा जब वह पहले से मौजूद न हो। संक्षिप्तता के लिए मैंने आपके उदाहरण को थोड़ा सरल कर दिया है:
db.meters.findOne()
{
"_id" : ObjectId("4f8e95a718bc9c7da1e6511a"),
"config" : {
"someparam" : 4.5
},
"data" : [
{
"Meter" : 123456789,
}
],
"key" : "20120418_123456789"
}
अब दौड़ें:
db.meters.update({"key" : "20120418_123456789"}, {"$addToSet": {"data" : {"Meter" : 1234}}})
और हमें अपडेटेड वर्जन मिलता है:
db.meters.findOne()
{
"_id" : ObjectId("4f8e95a718bc9c7da1e6511a"),
"config" : {
"someparam" : 4.5
},
"data" : [
{
"Meter" : 123456789,
},
{
"Meter" : 1234
}
],
"key" : "20120418_123456789"
}
वही आदेश फिर से चलाएँ और परिणाम अपरिवर्तित है।
नोट:आप इन दस्तावेज़ों को विकसित करने जा रहे हैं, खासकर यदि यह फ़ील्ड असीमित है और इस तरह से अपडेट करके लगातार (अपेक्षाकृत महंगी) चाल चल रही है - आपको इसे कम करने के तरीकों पर विचारों के लिए यहां एक नज़र रखना चाहिए:
http://www.mongodb.org/display/DOCS/Padding +Factor#PaddingFactor-ManualPadding