更新 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
我需要更新位于 '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