【问题标题】:Delete an ObjectId from an Array - MongoDB, Mongoose从数组中删除 ObjectId - MongoDB、Mongoose
【发布时间】:2021-04-01 03:57:06
【问题描述】:

我正在尝试删除一个“类别”文档,它是位于“菜单”架构内的数组中的 ObjectId。 “菜单”架构如下所示:

categories: [
  {
    type: ObjectId,
    ref: "Category",
  },

它包含我要删除的 ObjectId

这是我尝试运行的控制器的 nodejs 代码:

    const deletedCat = await Category.findByIdAndRemove(catId, function (err) {
  if (err) console.error(err)
})
const updateMenu = await Menu.findOneAndUpdate(
  { _id: menuId },
  { $pull: { categories: { _id: new ObjectId(catId) } } },
  { new: true }
)

$pull 不会改变 DB,ObjectId 仍然在数组中。

我也尝试过不使用“新 ObjectId”

我做错了什么?

【问题讨论】:

    标签: javascript node.js mongodb mongoose mongodb-query


    【解决方案1】:

    好的,所以我刚刚开始工作。 答案很简单,用ObjectId作为Array中key的值(数组名)

    const updateMenu = await Menu.findOneAndUpdate(
      { _id: menuId },
      { $pull: { categories: ObjectId(catId) } },
      { new: true }
    )
    

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2016-03-16
      • 2019-01-13
      • 2016-05-09
      • 2018-08-05
      相关资源
      最近更新 更多