MongoDB推入嵌套数组

时间:2019-08-20 15:54:06

标签: arrays mongodb mongodb-query

我有一个类似于以下示例的文档,如果不存在,需要创建一个脚本以在阵列配置中插入键F。

{
    "_id" : "5cde9ea5e326cd4bebbb2251",
    "scenario" : "SCENARIO_A",
    "step" : [ 
        {
            "type" : "STEP_TYPE_A",
            "configs" : [ 
                {
                    "key" : "A"
                }, 
                {
                    "key" : "B"
                }, 
                {
                    "key" : "C"
                }, 
                {
                    "key" : "D"
                }, 
                {
                    "key" : "E"
                }
            ]
        }
    ]
}

因此,我创建了此代码,但是它不起作用,没有在数组中插入项目。

var cursor = db.getCollection('MyColletion').find({
  "scenario": "SCENARIO_A",
  "step.type": "STEP_TYPE_A",
  "step.configs.key": "F"
});

if (!cursor.hasNext()) {
    cursor = db.getCollection('MyColletion').find({"scenario": "SCENARIO_A", "step.type": "STEP_TYPE_A"});
    if (cursor.hasNext()) {
        var doc = cursor.next();
        print("updating doc with id = " + doc._id);
        db.collection.update(
            { "_id" : doc._id, "step.type": "STEP_TYPE_A" },
            { "$push": 
                { "step.$.configs": 
                    {
                        "key" : "F"
                    }
                }
            }
        );
    } else {
        print("step does not exist");
    }
} else {
    print("config does not exist");
}

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题出在那行:

db.collection.update(

我更改为:

db.getCollection('MyCollection').update(