使用mongoose从双嵌套数组中删除条目

时间:2014-12-16 05:02:06

标签: node.js mongoose pull

我正在尝试从嵌套在另一个数组中的数组中删除一个条目,如下所示:

{
    "_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 }
            }
        }
    ])

其中'id'是ObjectID(548f5ca9fa9dc1000016a725)和line_item_id = 305429245-1,但是,这不起作用。谁能让我知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试单独使用find和Update功能而不是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
}

我提到的模型应该是您正在使用的模型。