2017-01-31 6 views
0

Lassen Sie uns sagen, ich habe diese Sammlung in MongoDB:Wie lösche ich ein Element in einem Array, das sich in einem mongodb-spezifischen Dokument befindet?

{ 
    "_id" : ObjectId("5890e5ea619737392c257846"), 
    "email" : "[email protected]", 
    "pass" : "123456", 
    "firstName" : "sdlriugth", 
    "lastName" : "sdfligkjh", 
    "movies" : [ 
     ObjectId("5890e5ec619737392c257847"), 
     ObjectId("5890e5ed619737392c257848"), 
     ObjectId("5890e5ee619737392c257849"), 
     ObjectId("5890e5ee619737392c25784a") 
    ] 
} 
{ 
    "_id" : ObjectId("5890e5f8619737392c25784c"), 
    "email" : "[email protected]", 
    "pass" : "123456", 
    "firstName" : "yjhtgj", 
    "lastName" : "vbnvbng", 
    "movies" : [ 
     ObjectId("5890e5fa619737392c25784d"), 
     ObjectId("5890e5fb619737392c25784e"), 
     ObjectId("5890e5fc619737392c25784f") 
    ] 
} 

Es gibt 2 Benutzer, jeder Benutzer eine Reihe von Filmen ids hat.

Ich möchte eine Abfrage ausführen, die eine bestimmte Film-ID von dem Benutzer entfernt, der diesen Film hat.

lassen Sie uns sagen, wenn ich den Film-ID entfernen werde: „5890e5ee619737392c25784a“ Ich werde erhalten:

{ 
    "_id" : ObjectId("5890e5ea619737392c257846"), 
    "email" : "[email protected]", 
    "pass" : "123456", 
    "firstName" : "sdlriugth", 
    "lastName" : "sdfligkjh", 
    "movies" : [ 
     ObjectId("5890e5ec619737392c257847"), 
     ObjectId("5890e5ed619737392c257848"), 
     ObjectId("5890e5ee619737392c257849"), 
    ] 
} 
{ 
    "_id" : ObjectId("5890e5f8619737392c25784c"), 
    "email" : "[email protected]", 
    "pass" : "123456", 
    "firstName" : "yjhtgj", 
    "lastName" : "vbnvbng", 
    "movies" : [ 
     ObjectId("5890e5fa619737392c25784d"), 
     ObjectId("5890e5fb619737392c25784e"), 
     ObjectId("5890e5fc619737392c25784f") 
    ] 
} 

P. S ich, was die Änderungen auf alle relevanten Dokumente vorgenommen werden. (Viele Benutzer können die gleiche Film-ID haben)

Thanks :)

+0

sage ich vergessen, dass ich die Änderungen auf allen relevanten Dokumenten vorgenommen werden soll, und nicht auf bestimmten Benutzer. – shayp

Antwort

0

Sie können den $ Pull-Operator verwenden. Also in Ihrem Fall würde die Abfrage sein

db.collection.updateOne({"_id": ObjectId("5890e5ea619737392c257846")}, 
{"$pull": {"movies": ObjectId("5890e5ee619737392c25784a")}}) 
Verwandte Themen