如何通过索引更新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
。
答案 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" }
}
)
这应该有效,如果没有 - 请在下面发表评论