更新 Mongoose 中的嵌套对象数组

Update nested array of Objects in Mongoose

我需要更新位于 'menu'(model) 架构中的 'categories' 数组。 我想更改特定类别的名称。

'category' 架构只是一个架构 - 不是模型... 此代码在 nosejs 服务器中

这是我的模式:

   const menuSchema = new mongoose.Schema(
  {
    user: {
      type: ObjectId,
      ref: "User",
      required: true,
    },
    restName: {
      type: String,
      trim: true,
      required: true,
    },
    categories: [categorySchema],
  },
  {
    timestamps: true,
  }
)

'category' 架构:

  const categorySchema = new mongoose.Schema(
  {

    name: {
      type: String,
      required: true,
    },

  {
    timestamps: true,
  }
)

我试着这样做:

try {
let updateMenu = await Menu.updateOne(
  { _id: menuId, "categories.$.name": oldCatName },
  { $set: { "categories.$.name": newName } }
)

猫鼬无法理解这一点

请帮忙

在您的 menuSchema 中,“类别”应该是一个 objectId 数组,引用其他模式,例如

categories = [productId: {
              type: mongoose.Schema.Types.ObjectId,
              ref: 'categorySchema',}
             ]

然后填充您想要获取类别名称的类别。看到这个 mongoose documentation link on populate