Doc:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Gibt es eine Möglichkeit, ein bestimmtes Objekt aus einem Array zu ziehen? I.E. Wie ziehe ich das gesamte Artikelobjekt mit der ID 23 aus dem Artikelarray.
Ich habe versucht:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
Ich bin mir jedoch ziemlich sicher, dass ich 'pull' nicht richtig verwende. Nach allem, was ich verstehe, wird Pull ein Feld aus einem Array ziehen, aber kein Objekt.
Alle Ideen, wie Sie das gesamte Objekt aus dem Array ziehen.
Als Bonus versuche ich dies in mongoose/nodejs zu tun, auch nicht sicher, ob diese Art von Dingen in der mongoose-API enthalten ist, aber ich konnte es nicht finden.
versuchen..
db.mycollection.update(
{'_id': ObjectId("5150a1199fac0e6910000002")},
{ $pull: { "items" : { id: 23 } } },
false,
true
);
Ich habe ein Dokument wie
Ich muss die Adresse aus dem Adressfeld löschen
Nachdem ich viel im Internet gesucht hatte, fand ich die Lösung
Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){
if(err) {
return res.status(500).json({'error' : 'error in deleting address'});
}
res.json(data);
});
my database:->
{
"_id" : ObjectId("5806056dce046557874d3ab18"),
"data" : [
{
"id" : 1
},
{
"id" : 2
},
{
"id" : 3
}
]
}
MY QUERY:->
db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}
OutPut:->
{
"_id" : ObjectId("5806056dce046557874d3ab18"),
"data" : [
{
"id" : 1
},
{
"id" : 2
}
]
}
Verwenden Sie $pull
, um die Daten zu entfernen
return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
return {
result: dashboardDoc
}
});
Sie können es auch probieren:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})