Javascript 节点js mongodb使用变量中的索引更新数组

Javascript 节点js mongodb使用变量中的索引更新数组,javascript,arrays,node.js,mongodb,Javascript,Arrays,Node.js,Mongodb,我有一个mongoDB文档,当它以对象形式出现时,您可以访问所需的数组,如下所示: map.layers.1.data.INDEX 这就是我目前拥有的: //Where = index, to = change to this selector["data.layers.1.data."+where]; mDB.update({"_id":msg.island+msg.map}, {$set:{selector:to}} , function(err, doc) { console.l

我有一个mongoDB文档,当它以对象形式出现时,您可以访问所需的数组,如下所示:

map.layers.1.data.INDEX
这就是我目前拥有的:

//Where = index, to = change to this
selector["data.layers.1.data."+where];
mDB.update({"_id":msg.island+msg.map}, {$set:{selector:to}} , function(err, doc) {
    console.log(doc);
});
(我用手指画了地图。) 其中数据是一个数组,我只想更新这一个数组索引。但该指数必须来自一个变量。在mongoDB中有这样做的方法吗


我目前正在阅读整个文档,然后替换需要的数据,然后更新整个文档。这不好,不快,也不必要(我希望)。

我不确定我是否理解了你的描述-一个示例文档可能会有所帮助-但我将附带它。假设您的文档看起来像

{
    "data" : {
        "layer" : [
            { "data" : [ 2, 5] },
            { "data" : [ 99 ] },
            { "data" : [ 0, 1, 2, 3 ] },
            { "data" : [ -1, "truffles", 6 ] },
        ]
    }
}
然后您可以更新数组的固定索引
data.layer.2.data
存储为变量
myIndex
的值,就像mongo shell中那样(与节点类似,但同步,无回调)


大致上(即有想法,但没有未定义变量的复制粘贴b/c)

这正是答案

要使用给定索引更新数组,必须在更新之前分别定义对象

set = {};
然后将索引指定为包含[]的对象的属性

set['example.nested.object.' + i] = foo; 
然后更新你的MongoDB

Collection.update($set: set);
应该有用

Collection.update($set: set);