Doc:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Czy istnieje sposób na pobranie określonego obiektu z tablicy? IE jak wyciągnąć cały obiekt item o id 23 z tablicy items.
Próbowałem:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
Jestem jednak pewien, że nie używam poprawnie opcji „ciągnij”. Z tego, co rozumiem, pull wyciągnie pole z tablicy, ale nie obiekt.
Wszelkie pomysły, jak wyciągnąć cały obiekt z tablicy.
Jako bonus próbuję to zrobić w mongoose / nodejs, a także nie jestem pewien, czy tego typu rzeczy są w API mangusty, ale nie mogłem tego znaleźć.
Odpowiedzi:
próbować..
db.mycollection.update( {'_id': ObjectId("5150a1199fac0e6910000002")}, { $pull: { "items" : { id: 23 } } }, false, true );
źródło
upsert
imulti
. Aby zapoznać się z aktualną składnią i dokumentacją, sprawdź ten link: docs.mongodb.com/manual/reference/method/db.collection.updateMam taki dokument jak
Muszę usunąć adres z tablicy adresów
Po przeszukaniu wielu stron w internecie znalazłem rozwiązanie
Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){ if(err) { return res.status(500).json({'error' : 'error in deleting address'}); } res.json(data); });
źródło
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 } ] }
źródło
Możesz też spróbować:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
źródło
Dla pojedynczego rekordu w tablicy:
db.getCollection('documents').update( { }, {'$pull':{ 'items':{'mobile': 1234567890 }}}, {new:true} );
Dla wielu rekordów z tym samym numerem telefonu komórkowego w tablicy:
db.getCollection('documents').update( { }, {'$pull':{ 'items':{'mobile': 1234567890 }}}, {new:true,multi:true} )
źródło
Służy
$pull
do usuwania danychreturn this.mobiledashboardModel .update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}}) .exec() .then(dashboardDoc => { return { result: dashboardDoc } });
źródło
Kishore Diyyana:
Jeśli chcesz usunąć wszystkie elementy, w tym klucz z listy atrybutów elementów. Oto przykład operatora unset mongoDB:
db.UM_PREAUTH_CASE.update ({'Id': 123}, {$ unset: {dataElements: ""}})
JSON Wygląda tak:
{"Id": 123, "dataElements": [{"createdBy": "Kishore Babu Diyyana", "createdByUserId": 2020}, {"createdBy": "Diyyana Kishore", "createdByUserId": 2021}]}
źródło