Mongodb |从文档数组中移动对象

时间:2018-07-14 07:47:40

标签: node.js mongodb mongoose

我试图从文档数组中删除一个对象,但是不起作用:

这是我的对象

{
    "_id" : ObjectId("5b487aa1427e5a1edc1cdbac"),
    "location" : {
        "latitude" : 0,
        "longitude" : 0
    },
    "email" : "ran@gmail.com",
    "firstName" : "Ran",
    "lastName" : "Alcobi",
    "interests" : [ 
        ObjectId("5b49a44bc3b19929b098547e")
    ],
}

我从兴趣集合中删除了兴趣,并且需要从用户的兴趣数组中删除该兴趣:

这是我的代码:

 router.delete('/:id',  (req, res) => {
    var id = req.params.id;

    if (!ObjectID.isValid(id)) {
      return res.status(404).send();
    }

    Interest.findOneAndRemove({
      _id: id,
    }).then((interest) => {
      if (!interest) {
        return res.status(404).send();
      }
      User.update(
        {$pull:       
           {interests: {$in : interest._id} }
        },
        {multi: true},
      ).then((user) => {

        console.log(user);

      res.send({interest});
    }).catch((e) => {
      res.status(400).send();
    });

    });
  });

非常感谢助手。我很高兴知道我的错误。

1 个答案:

答案 0 :(得分:1)

您在错误的更新查询参数中传递了$in。在更新查询中,第一个参数用于过滤器,第二个参数用于更新操作...所以您必须首先使用$pull进行过滤然后从兴趣数组中vim ...

所以,最后您需要做类似的事情

User.update(
  { interests: { $in : [interest._id] } },
  { $pull: { interests: interest._id } }
  { multi: true },
)