猫鼬。如何更新另一个数组中包含的数组元素?

时间:2018-08-18 21:29:09

标签: javascript mongoose

我有一个非常复杂的模式,它有一个内部数组,每个数组元素都包含一个更高级别的数组。但是如何更新第二级数组中的数据。

我需要更新services数组,但是如何获得访问权限?我有Item的_id,线程号,班次号(只能是3,由于不是三级数组,所以很难排列)和服务名。

我需要类似(伪代码)

getByItemId(id) .getByThreadNumber(tNumber) .getByShift(numberShift) .getByServiceName(name) .updateLogInCounter(newValCounter)

const itemSchema = new Schema({
    threads: [
        {
            number: {
                type: Number,
                requred: true
            },
            {
                firstShift: {
                    "someData": ... ,
                    "services": [
                        "name": {type: String}
                        "lastUpdate": {type: Date},
                        "logInCounter": {type: Number}
                    ]
                },
                secondShift: {
                    "someData": ... ,
                    "services": [
                        "name": {type: String},
                        "lastUpdate": {type: Date},
                        "logInCounter": {type: Number}
                    ]
                },
                thirdShift: {
                    "someData": ... ,
                    "services": [
                        "name": {type: String},
                        "lastUpdate": {type: Date},
                        "logInCounter": {type: Number}
                    ]
                }
            }
        }
    ]
})

也许这个数据结构不正确,这不可能吗?也许我需要创建许多收藏集?也许有些插件可以帮助我。还是正常,如果是的话,如何获取我的目标数据?

1 个答案:

答案 0 :(得分:1)

您可以在3.6中使用以下代码

使用计算出的属性名称动态传递班次编号。 $[identifier]位置运算符,用于匹配线程号和服务名称,后跟用于服务的线程内部的logInCounter增量。

...1: from test_example.rb:9:in `block in <main>'

.../minitest-5.11.3/lib/minitest/spec.rb:212:in `it':
wrong number of arguments (given 2, expected 0..1) (ArgumentError)