我一直在尝试使用mongoose update(),$ elemMatch和$ arrayfilters将对象推入嵌套数组中。
以下是架构:
var details = new Schema({
var1: { type: String, required: true },
array1: [{
var2: { type: String, required: true },
array2: [{
var3: { type: String, required: true },
array3: [{
a: { type: String, required: true },
b: { type: Number, required: true },
c: { type: Date, required: true }
}]
}]
}]
})
这是我编写的要在array3中推送对象的猫鼬代码:
Details.update(
{
var1: value1,
array1: {
"$elemMatch": {
var2: value2,
"array2.var3": value3
}
}
},
{
"$push": {
"array1.$[outer].array2.$[inner].array3": {
a: valueOfa,
b: valueOfb,
c: valueOfc
}
}
},
{
"arrayFilters": [{ "outer": value2}, { "inner": value3}]
}, function (err, data) {
if (err) {
console.log('Error!', err);
response.sendStatus(500)
} else {
console.log('pushed')
response.sendStatus(200)
}
}
)
我没有任何错误!我的状态为200。但是没有将对象推入array3中。这里需要一些帮助。