Ich benutze Mungo-Datenbank für eine meiner Chat-Anwendung für die Geschichte und Update wie UI.Abfrage Updates Falscher Eintrag in Array
Ich habe Objekt in der Datenbank folgen.
{
"_id" : ObjectId("5979dbd157634341fc8cb03a"),
"count" : 3,
"room_status" : true,
"room_id" : "s7d8a9s7d8a90sd",
"users" : [
{
"user_status" : true,
"user_id" : 1501158353821
},
{
"user_id" : 1501158361890,
"user_status" : true
},
{
"user_id" : 1501158369102,
"user_status" : true
}
],
"__v" : 0
}
Von Anfrage nehme ich Daten {room_id: "s7d8a9s7d8a90sd", "user_id":1501158361890 }
. Nach room_id
und user_id
muss ich Objekt wie, user_status : false
und count increased by -1
aktualisieren.
HINWEIS: Wenn user_status
bereits falsch als keine Notwendigkeit Zahl zu verringern, indem 1.
Ich habe versucht, mit Follow-Abfrage lassen Sie mich furthure Option wissen.
room.update({
"room_id": req.body.room_id,
"users.user_id": req.body.user_id,
'users.user_status': true
}, {
'$set': {
'users.$.user_status': false
},
'$inc': { count: -1 }
}, function(err, resData) {
if (err) {
} else {
}
});
Ich möchte eine Ausgabe wie
{
"_id" : ObjectId("5979dbd157634341fc8cb03a"),
"count" : 2,
"room_status" : true,
"room_id" : "s7d8a9s7d8a90sd",
"users" : [
{
"user_status" : true,
"user_id" : 1501158353821
},
{
"user_id" : 1501158361890,
"user_status" : false
},
{
"user_id" : 1501158369102,
"user_status" : true
}
],
"__v" : 0
}
das sein sollte 'room.update ({ "room_id": req.body.room_id "Benutzer": { "$ elemMatch": "user_id": req.body. user_id, "user_status ': true}}, ....' Da ohne '$ elemMatch'' 'users.user_status" 'mit" jeder "Array-Position übereinstimmen kann, verwenden Sie' $ elemMatch', also die "Kombination" von –