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

Update Object at Specific Array Index in MongoDB

我有一个表格的集合

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

并且数组的结构有意义。我将如何更新第一个元素 ([0][0]) 并设置名称 = "alex"。我见过很多关于如何更新匹配查询但不匹配特定元素的数组元素的问题。明确一点,更新后,记录应该是这样的:

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

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

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

如果我们没有固定位置并且在运行时已知或动态 那么这种方法非常有效

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

你可以走得更远!! 如果您想将索引粘贴为变量,请使用像这样的字符串模板

db.collection.update({"id":1},{$set:{[`data.${index}.${index}.name`]:"alex"}})