Mongoose FInd并从文档数组中删除对象

时间:2017-02-24 17:19:04

标签: javascript node.js mongodb mongoose

我有一份文件'收集':

{
name: {type: String, required: true, default: "Untitled Collection"},
movies: [
        {  the_id: {type: String},
            movie_id: {type: String},
            tmdb_id: {type: String},
             original_title: {type: String},
              release_date: {type:Date}
        }],
author: {type: String},}

我需要在电影[]中找到并删除特定项目。这就是我目前所拥有的,它不起作用。

req.body是一个传递POST请求数据的对象,拥有能够匹配movie []数组中的一个所需的所有信息

 Collection.findOne({_id : req.params.id}, (err, collection) =>{
        if(err){res.status(400).json(err);}

        if(!collection)
        {
            res.status(404).json({message: 'No collection found'});
        }else{
            collection.movies.pop(req.body);
            collection.save();

            res.json(collection);
        }
    });

当前所做的只是弹出数组中的前端对象,但我需要它来删除数组中等于req.body的对象

2 个答案:

答案 0 :(得分:1)

查看$ pull运算符

collection.movies.pull(req.body);

答案 1 :(得分:0)

您可以使用$pull

删除数组中的项目
Collection.update({
    _id: req.params.id
}, {
    $pull: {
        'movies': req.body
    }
}, (err, collection) => {
    if (err) {
        res.status(400).json(err);
    }
    console.log(res);
    res.status(200);
});