Betrachten Sie diese DatenWie kann man ein boolesches Feld in einem Array-Element in MongoDB umschalten?
{
"_id" : ...,
"array" : [
{ "name" : "value1","flag" : true } ,
{ "name" : "value2","flag" : false }
]
}
Ich möchte das zweite Array-Element (von false auf true) wechseln
Ich weiß, dass ich ein bestimmtes Element aktualisieren, die sehr nützlich $ Positions Operator wie folgt aus:
db.myCollection.update(
{'array.name':'value2'},
{
$set: {
'array.$.flag':true
}
},false,true);
Aber gibt es eine Möglichkeit, den $ positional-Operator auch für die Werteinstellung zu verwenden?
z.B. so was?
db.myCollection.update(
{'array.name':'value2'},
{
$set: {
'array.$.flag':'!array.$.flag' //<--
}
},false,true);
Danke, ich hatte Angst es ist so, also bedeutet es, es wird nicht transaktional sein, oder? –
@EranMedan: Ja, aber es gibt einen Workaround. Siehe aktualisierte Antwort. –