在MongoDB中更新特定数组索引处的对象

时间:2015-01-19 00:33:31

标签: mongodb mongodb-query nosql

我有一个表格

的集合
{ id : 1,
  data: [ [ { name : "alice" }, { name : "bob" } ],
          [ { name : "dan" },   { name : "rob" } ] ] }

并且数组的结构具有意义。我如何更新第一个元素([0] [0])并设置name =“alex”。我已经看到很多问题,解决如何更新匹配查询而不是特定元素的数组元素。需要说明的是,更新后,记录应如下所示:

{ id : 1,
  data: [ [ { name : "alex" },  { name : "bob" } ],
          [ { name : "dan" },   { name : "rob" } ] ] }

2 个答案:

答案 0 :(得分:6)

假设您已经创建了具有某种目的的结构,理想情况下查询变得更加困难,您可以通过明确指定索引来更新它:

db.collection.update({"id":1},{$set:{"data.0.0.name":"alex"}})

答案 1 :(得分:0)

如果我们没有固定的位置并且在运行时或动态时已知 然后这种方法完美无缺

var setObject = {};
setObject["board."+ x +"."+ y] = player;
gamesColl.update({_id: realId},{
$set:setObject
}, function(err,doc){
console.log(err,doc);
});