2013-03-26 2 views
52

Doc:MongoDB, удалить объект из массива

{ 
    _id: 5150a1199fac0e6910000002, 
    name: 'some name, 
    items: [{ 
     id: 23, 
     name: 'item name 23' 
    },{ 
     id: 24, 
     name: 'item name 24' 
    }] 
} 

Есть ли способ вывести конкретный объект из массива? И.Е. как я могу вытащить весь объект объекта с идентификатором 23 из массива элементов.

Я попытался:

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}}); 

Однако я уверен, что я не использую «тянуть» правильно. Из того, что я понимаю, pull вытащит поле из массива, но не объект.

Любые идеи о том, как вытащить весь объект из массива.

В качестве бонуса я пытаюсь сделать это в mongoose/nodejs, а также не уверен, что этот тип вещей находится в API мангуста, но я не смог его найти.

+1

Пытались ли вы это? http://stackoverflow.com/questions/9048424/removing-specific-items-from-array-with-mongodb –

+0

yup it it it it. Благодаря! – lostintranslation

ответ

83

попробовать ..

db.mycollection.update(
    {'_id': ObjectId("5150a1199fac0e6910000002")}, 
    { $pull: { "items" : { id: 23 } } }, 
false, 
true 
); 
+0

yup, мой синтаксис был неправильным. Благодаря! Также попробовал без расстроенных и нескольких вариантов, и это тоже сработало. – lostintranslation

+0

СПАСИБО @sambomartin –

+5

Что это за булевские значения? –

7

У меня есть документ, как

enter image description here

Я должен удалить адрес из адресной массива

После поиска много в интернете я нашел решение

Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){ 
     if(err) { 
      return res.status(500).json({'error' : 'error in deleting address'}); 
     } 

     res.json(data); 

     }); 
+0

Как это работает? это можно сделать в PHP @Deepak – RussellHarrower

4
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 
      } 
     ] 
    } 
0

использование $ тянуть, чтобы удалить данные

return this.mobiledashboardModel 
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}}) 
.exec() 
.then(dashboardDoc => { 
    return { 
     result: dashboardDoc 
    } 
}); 
Смежные вопросы