मैं इस तरह एक MongoDB संग्रह में एक दस्तावेज़ है:एक सरणी एक सरणी में है कि में एक आइटम अद्यतन
{
sessions : [
{
issues : [
{
id : "6e184c73-2926-46e9-a6fd-357b55986a28",
text : "some text"
},
{
id : "588f4547-3169-4c39-ab94-8c77a02a1774",
text : "other text"
}
]
}
]
}
और मैं आईडी के साथ इस मुद्दे को अपडेट करना चाहते 588f4547-3169-4c39-ab94 पहले सत्र में -8c77a02a1774।
समस्यामैं केवल पता है कि यह है कि यह पहले सत्र और इस मुद्दे आईडी है
तो मैं कुछ इस तरह की कोशिश (नहीं इस मुद्दे के सूचकांक!):
db.mycollection.update({ "sessions.0.issues.id" : "588f4547-3169-4c39-ab94-8c77a02a1774"},
{ $set: { "sessions.0.issues.$.text" : "a new text" }})
लेकिन मुझे मिल गया निम्नलिखित परिणाम:
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 16837,
"errmsg" : "The positional operator did not find the match needed from the query. Unexpanded update: sessions.0.issues.$.text"
}
मैं यह कैसे कर सकता हूं?
सहायता के लिए धन्यवाद।
db.mycollection.update({"sessions.0.issues": {$elemMatch: {id: <yourValue>}}}, {$set: {"sessions.0.issues.$.text": "newText"}})
सूचना है कि अपने अद्यतन अभिव्यक्ति सही था:
मुझे नहीं लगता कि "session.0.issues.Id" काम करेगा क्योंकि समस्याएं फिर से एक सरणी है – Sikorski
जब मैं कोई खोज करता हूं तो यह काम करता है, यह दस्तावेज़ देता है। –