MongoDB, удалить объект из массива
Doc:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
есть ли способ вытащить конкретный объект из массива? Т. е. как я могу вытащить весь объект item с идентификатором 23 из массива items.
Я пробовал:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
однако я уверен, что я не использую "тянуть" правильно. Из того, что я понимаю, pull будет тянуть поле из массива, но не объект.
любые идеи, как вытащить весь объект из массива.
в качестве бонуса я пытаюсь сделать это в мангусте / nodejs, а также не уверен, что этот тип вещи находится в API мангуста, но я не мог его найти.
5 ответов:
попробовать..
db.mycollection.update( {'_id': ObjectId("5150a1199fac0e6910000002")}, { $pull: { "items" : { id: 23 } } }, false, true );
У меня есть документ типа
Я должен удалить адрес из массива адресов
после поиска лотов в Интернете я нашел решение
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 } ] }
использовать
$pullдля удаления данныхreturn this.mobiledashboardModel .update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}}) .exec() .then(dashboardDoc => { return { result: dashboardDoc } });
вы также можете попробовать:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})

Comments