मैं बस खुद इस समस्या में भाग गया। मुझे एक-कॉल समाधान नहीं मिला, लेकिन मुझे एक दो-कॉल समाधान मिला जो काम करता है जब आपके सरणी तत्वों में एक अद्वितीय मान होता है . $pull
का उपयोग करें कमांड पहले, जो एक सरणी से तत्वों को हटाता है, और फिर $push
।
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
यह तब काम करना चाहिए जब दस्तावेज़ मौजूद न हो, जब दस्तावेज़ मौजूद हो लेकिन सरणी में प्रविष्टि मौजूद न हो, और जब प्रविष्टि मौजूद हो।
दोबारा, यह केवल तभी काम करता है जब आपके पास id
. जैसा कुछ हो इस उदाहरण में फ़ील्ड, जो सरणी के सभी तत्वों में अद्वितीय होना चाहिए।