2014-12-16 4 views
0

Я пытаюсь удалить запись из массива, который вложен в другой массив, как вы можете увидеть ниже:Удалить запись из двойного Нестер массива с помощью мангуста

{ 
    "_id" : ObjectId("548f5ca9fa9dc1000016a725"), 
    "entries" : [ 
     { 
      "_id" : ObjectId("548f5cc8fa9dc1000016a726"), 
      "content" : [ 
       { 
        "order" : ObjectId("5489fa9127f1310000bea2ed"), 
        "order_id" : "305429245", 
        "item_id" : "305429245-1" 
       }, 
       { 
        "order" : ObjectId("5489fa9127f1310000bea2ce"), 
        "order_id" : "330052901", 
        "item_id" : "330052901-1" 

       } 
      ], 
      "stop_number" : 1 
     }, 
     { 
      "stop_number" : 2, 
      "expected_arrival" : ISODate("2014-12-15T17:11:11.000Z"), 
      "expected_departure" : ISODate("2014-12-15T19:03:17.000Z"), 
      "_id" : ObjectId("548fb2826e52c20000bd2299"), 
      "content" : [] 
     } 
    ] 
} 

И я пытаюсь удалить запись, есть '305429245-1', так что я использовал:

Q.npost(Manifests, 'findOneAndUpdate', [ 
     { '_id': id }, 
     { 
      '$pull': { 
       'entries.content': { item_id: line_item_id } 
      } 
     } 
    ]) 

где 'идентификатор' является ObjectID (548f5ca9fa9dc1000016a725) и LINE_ITEM_ID = 305429245-1, однако, это не работает. Может ли кто-нибудь сообщить мне, что я делаю неправильно?

ответ

0

Попробуйте использовать поиск и функции обновления по отдельности, а не findOneAndUpdate

Model.find({'_id: id'},function(err,callback){...}) 
{ 
//handle callback 
} 
Model.update({'_id: id'}, {$pull: {'entries.content': item_id: line_item_id}}, function(err,callback){..}) 
{ 
//do some logic or handle callback 
} 

здесь Модель которой я уже говорил, должна быть модель, которую вы используете.