2012-05-23 9 views
8

में मान को कैसे ढूँढें और नीचे एक उदाहरण दस्तावेज़ है।एक नेस्टेड सरणी

{ 
     "_id" : ..., 
     "inprogress" : true, 
     "name" : "Biz report", 
"inviteCode" : [ 
     { 
       "key" : "4fbd2b4b265a3", 
       "status" : "1" 
     }, 
     { 
       "key" : "4fbd2b4b265b5", 
       "status" : "1" 
     }, 
     { 
       "key" : "4fbd2b4b265b9", 
       "status" : "1" 
     }, 
     { 
       "key" : "4fbd2b4b265bc", 
       "status" : "1" 
     }, 
     { 
       "key" : "4fbd2b4b265c0", 
       "status" : "1" 
     } 
] 
    } 

दस्तावेज़ के अनुसार, मैं अद्यतन तर्क के रूप में एक आपरिवर्तक वस्तु का उपयोग कर सकते हैं, लेकिन ऐसा लगता है कि एक अद्यतन तर्क मैं अद्यतन करना चाहते डायन मैदान पर एक फिल्टर शामिल नहीं है। मैं केवल $set:{name:"xxx"} का उपयोग कर सकता हूं लेकिन मैं निर्दिष्ट नहीं कर सकता कि नेस्टेड सरणी में कौन सा तत्व अपडेट करना है। मैं आमंत्रण कोड कॉलम के दायर "स्थिति" कैसे सेट करूं जहां कुंजी "4fbd2b4b265a3" है? आपके मामले में http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

:

उत्तर

11

आप $ स्थितीय ऑपरेटर का उपयोग कर सकते

db.collection.update({ inviteCode: { $elemMatch: { key: "4fbd2b4b265a3" } } }, 
    { $set: { 'inviteCode.$.status': '2' } }) 

'$' को प्रभावी ढंग से एक चर जिसका मान सरणी में पहले मैच के सूचकांक के लिए सेट है ।

+0

इस उत्तर को खोजने में मुझे काफी समय लगा। धन्यवाद! – zVictor

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