猫鼬$ pull得到nModified:0

时间:2020-01-23 17:53:06

标签: node.js mongodb mongoose

花了整整一天的时间后...我需要帮助。

节点v12.14.1 猫鼬v5.8.9 mongoDB v4.2.1

所以一切都是最新的。

我尝试了很多方法,但这就是它的工作方式:

model.updateOne({_id:model_id},{$pull: {videos: {_id:video_id},{multi:true})

但是我得到了

{ n: 1, nModified: 0, ok: 1 }

因此,它被发现了,没有错误,但是它确实删除/修改了对象。

不能弄清楚应该怎么做。

2 个答案:

答案 0 :(得分:0)

因此,根据您的查询,我假设这是您的文档的样子:

{
   _id: "<some uuid>",
   videos: [
      {
         _id: "<some uuid>"
      },
      {... n}
   ]
}

在这种情况下,您的更新查询看起来不错,也许您需要考虑video_id输入。 您可以尝试进行等效查找吗?:

model.find({_id:model_id, 'team._id': video_id})

答案 1 :(得分:0)

有时... 有时候,错误是在到达这一行代码之前发生的。。。

很难在终端输出中找到原因,而且在指南针中,一切看起来都很好。

但是,在那一刻,我保存了视频并更新用户以使其在用户集合中也只有视频ID,标题和子弹,我做到了:

$push: {
    videos: [{
        _id: data._id,
        title: data.title,
        slug: data.slug
    }]
}

是的,我将包含对象的空数组推入数组。但是就像我说的那样,输出以及.find()都一样。

在我删除[]括号并测试了新的数据集之后,$ pull可以正常工作。

猜猜这是我最难的错误了……到目前为止最难的错误了!

感谢您的帮助!