首页 > 解决方案 > 使用 $elemMatch 和 $arrayFilters 在嵌套数组中推送对象

问题描述

我一直在尝试使用 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。在这里需要一些帮助。

标签: arraysmongodbmongoose

解决方案


推荐阅读