繁体   English   中英

猫鼬-删除更新中的数组元素

[英]Mongoose - remove array element in update

我有以下格式的JSON:

{
   _id:5522ff94a1863450179abd33,
   userName:'bill',
   __v:3,
   friends:[
      {
         _id:55156119ec0b97ec217d8197,
         firstName:'John',
         lastName:'Doe',
         username:'johnDoe'
      },
      {
         _id:5515ce05207842d412c07e03,
         lastName:'Adam',
         firstName:'Foo',
         username:'adamFoo'
      }
   ]
}

我想删除整个相应的子数组。 例如,我要删除ID为55156119ec0b97ec217d8197用户John Doe,因此结果将是:

{
   _id:5522ff94a1863450179abd33,
   userName:'bill',
   __v:3,
   friends:[
      {
         _id:5515ce05207842d412c07e03,
         lastName:'Adam',
         firstName:'Foo',
         username:'adamFoo'
      }
   ]
}

到目前为止,我有这个:

exports.delete = function (req, res) {
    var friends = req.friends[0];

    friends.update(
        {'_id': req.body.friendsId},
        {$pull: {'friends.friends': {_id: req.body.friendId}}}, function (err) {
            if (err) {
                return res.status(400).send({
                    message: getErrorMessage(err)
                });
            } else {
                res.json(friends);
            }
        });
};

但是没有结果,而且我也没有收到任何错误,它将和以前一样。 req.body.friendsId是主数组的ID, req.body.friendId是我要提取的特定用户的ID。

将更新查询更改为此:

exports.delete = function (req, res) {
    var friends = req.friends[0]; // assuming the friends object is your mongodb collection

    friends.update(
        { '_id': req.body.friendsId },
        { $pull: {'friends': { _id: req.body.friendId } } }, function (err) {
            if (err) {
                return res.status(400).send({
                    message: getErrorMessage(err)
                });
            } else {
                res.json(friends);
            }
        });
};

这将搜索具有friends数组元素_id值= req.body.friendsId文档,并使用$pull运算符从该数组中删除特定的数组元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM