Ma collection (appelée "travailleurs") :
"_id" : "500"
"type" : "Manager",
"employees" : [{
"name" : "bob"
"id" : 101
},{
"name" : "phil"
"id" : 102
}]
Objectif : pour chaque _id qui est un type : Manager ET qui contient un sous-document dont l'"id" est 102 : remplacer 102 par 202.
Résultat final souhaité :
"_id" : "500"
"type" : "Manager",
"employees" : [{
"name" : "bob"
"id" : 101
},{
"name" : "phil"
"id" : 202
}]
J'ai essayé :
db.workers.update({type:'Manager','employees.id':'102'},{$set:{'employees.id':'202'}},{multi:true})
J'ai ensuite fait les deux choses suivantes pour vérifier :
db.workers.find({type: "Manager", 'employees.id': 102}).count()
J'obtiens un résultat de 9.
J'ai également essayé ceci pour vérifier :
db.workers.find({$and: [{type: "Manager"},{"employees.id":60}]}).count()
Le résultat est de 0.
Je suis assez confus à ce stade. Ma mise à jour est-elle erronée ? Ma recherche est-elle erronée ? Les deux ? Le résultat '9' est-il faux ? Le '0' est-il erroné ?