我正在尝试更新对象,但是在更新对象时遇到了问题。请检查方案:
const personSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
teachers: [
{
name: {
type: String,
},
information: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'info',
}],
},
],
我需要在此方案中更新我正在尝试做的信息(创建的是创建的对象):
const person = await ctx.models.person
.findOneAndUpdate({
teachers: {
$elemMatch: {
teachers: {
_id: input.processId,
},
},
},
},
{
$push: {
teachers: {
information: created,
},
},
}, {
new: true,
});
答案 0 :(得分:0)
首先,按照MongoDb官方文档的建议docs,您不需要$ elemMatch:
如果在$ elemMatch表达式中仅指定一个条件,则无需使用$ elemMatch。
除此之外,我建议使用点号进行搜索。您的代码将如下所示:
const person = await ctx.models.person
.findOneAndUpdate({
"teachers._id" : input.processId
},
{
$push: {
teachers: {
information: created,
},
},
}, {
new: true,
});