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

帕维尔

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

我需要更新services数组但如何访问?我有项目的 _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}
                    ]
                }
            }
        }
    ]
})

也许这个数据结构不正确,这是不可能的?也许我需要创建许多集合?也许一些插件可以帮助我。或者这是正常的,如果是,如何获取我的目标数据?

s7vr

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

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

var query = {'_id': id};
var inc = {'$inc':{'threads.$[t].' + [numberShift] + '.services.$[s].logInCounter':newValCounter}};
var arrayFilters = {arrayFilters: [{'t.number': tNumber, 's.name':name}]};
Item.findOneAndUpdate(query, inc, arrayFilters);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从猫鼬中另一个数组内部的数组中删除元素

更新猫鼬文档中另一个数组内的数组中的字段

猫鼬,更新另一个数组内的数组中的对象

检查数组的元素是否包含在另一个数组的元素中

猫鼬查询一个数组包含另一个数组中的值

检查数组的所有元素是否包含在另一个数组中

从猫鼬中的另一个数组匹配数组元素/元素(至少一个)

如何使用猫鼬聚合获取嵌套在另一个数组中的数组大小

Javascript检查对象数组的每个元素是否包含在另一个数组中

检查数组-值是否包含在另一个数组中?

Laravel 检查包含在另一个数组中的对象数组

如何根据另一个数组 swift 3 在数组中包含元素

检查一个数组中的所有元素是否都包含在另一个数组中

将不包含在一个数组中的值与另一个数组隔离

检查一个数组是否包含在另一个数组中

检查一个数组项是否包含在另一个数组项中

Pyspark合并数据帧的一个数组包含在另一个数组中

检查一个数组是否包含在另一个数组中

检查一个数组中的对象是否包含在另一个对象数组中

如何根据包含在另一个数组中的字符串在NSArray中查找匹配的字典

Python:如何使用numpy.all和numpy.any检查一个数组是否包含在另一个数组中?

如何获取包含在另一个数组中的一个数组的值的所有索引?

Array.slice 使用包含在另一个数组中的索引号

来自包含对象的数组的对象,其中对象的值包含在另一个数组中

如何查找包含元素与另一个数组中的其他元素匹配的数组的文档?

如何在猫鼬中填充引用另一个模式的对象数组

NodeJS:从数组中查找对象,该对象不包含在另一个数组中

如何更新包含另一个元素的 div 内的文本?

如何查询mongo以查找包含来自另一个数组的任何元素的数组?