यदि आप किसी सूची से हैश (ऑब्जेक्ट) में स्विच करने के इच्छुक हैं, तो आप परमाणु रूप से ऐसा कर सकते हैं।
दस्तावेज़ों
से :"$inc
... यदि फ़ील्ड ऑब्जेक्ट में मौजूद है, तो संख्या मान से फ़ील्ड को बढ़ाता है, अन्यथा फ़ील्ड को संख्या मान पर सेट करता है।"
{ $inc : { field : value } }
इसलिए, यदि आप अपने कंटेनर और ऑब्जेक्ट को रिफलेक्टर कर सकते हैं:
words: [
{
'word': 'foo',
'count': 1
},
...
]
करने के लिए:
words: {
'foo': 1,
'other_word: 2,
...
}
आप ऑपरेशन का उपयोग कर सकते हैं update
साथ:
{ $inc: { 'words.foo': 1 } }
जो { 'foo': 1 }
. बनाएगा अगर 'फू' मौजूद नहीं है, तो फू को बढ़ा दें।
उदा.:
$ db.bar.insert({ id: 1, words: {} });
$ db.bar.find({ id: 1 })
[
{ ..., "words" : { }, "id" : 1 }
]
$ db.bar.update({ id: 1 }, { $inc: { 'words.foo': 1 } });
$ db.bar.find({ id: 1 })
[
{ ..., "id" : 1, "words" : { "foo" : 1 } }
]
$ db.bar.update({ id: 1 }, { $inc: { 'words.foo': 1 } });
$ db.bar.find({ id: 1 })
[
{ ..., "id" : 1, "words" : { "foo" : 2 } }
]