{
"_id": "xPBc4By8FemDwTPqH",
"u": {
"_id": "6PoZawHZcQz4Gwzcv",
"username": "michael"
},
"friends": [
{
"u": {
"_id": "eGqDjAjjtYADbuSnn",
"username": "michael",
"name": "michael"
}
},
{
"u": {
"_id": "k4gKCGwYryXDMMHvs",
"username": "joyce",
"name": "joyce"
}
}
]
}
Je veux mettre à jour le nom de "friends.u.username": le nom de "michael" est "bonjour", comment je dois le faire.
Appliquez le $set
avec l'opérateur $
opérateur positionnel dans votre mise à jour pour changer le champ name
.
Le $
opérateur positionnel identifiera l'élément correct dans le tableau à mettre à jour sans spécifier explicitement la position de l'élément dans le tableau, ainsi votre déclaration de mise à jour finale devrait ressembler à:
db.collection.update(
{ "friends.u.username": "michael" },
{ "$set": { "friends.$.u.name": "hello" } }
)
Vous pouvez utiliser l'opérateur $ set.
> db.test.update({"friends.u._id":"eGqDjAjjtYADbuSnn"},{$set:{"friends.$.u.name":"hello"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })