通过变量索引更新mongoDB文档中的数组

时间:2016-07-02 08:29:46

标签: javascript arrays mongodb

如何通过索引更新mongoDB文档中的数组,该数据存储在变量中?

{
    _id: 'IDString',
    field: [ bla, bla, old, bla ];
}

let i = 2;
Collection.update(
    { _id: 'IDString' },
    { $set: 
        { 'field.$.i': 'new' }
    }
);

所以结果应该是:

{
    _id: 'IDString',
    field: [ bla, bla, new, bla ];
}

我的代码不起作用,因为我想使用变量 i

2 个答案:

答案 0 :(得分:1)

使用dot notation语法设置更新文档,因为这将通过从零开始的索引位置访问数组的元素。您必须将数组名称与点(。)和从零开始的索引位置连接起来,并用引号括起来。

因此,在您的示例中,您需要动态设置更新文档以生成

var update = { "$set": { "field.2": "new" } }

以下代码段显示了这一点:

var i = 2,
    update = { "$set": {} };

update["$set"]["field."+i] = "new";
db.collection.update({ "_id": "IDString" }, update)

答案 1 :(得分:0)

Collection.update(
    { _id: 'IDString', field.2 : 1 },
    { $set: {
        "field.$" : "new" }
    }
)

这应该有效,如果没有 - 请在下面发表评论