我有一个表格
的集合{ 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" } ] ] }
答案 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);
});