更新数组元素 mongo 通过索引使用C-Driver

更新数组的元素 mongo, 我使用这样的语法:


{"$set":{"a.0":1238},{"a.1":402}}


或者,更准确地说,我使用呼叫电话 C-driver, 我认为这相当于这个。 似乎工作正常,但是当我看着物体时 MongoHub, 我知道了:


a: {"0":1238,"1":402}


反而:


a: [1238,402]


是否有人知道使用C-Driver通过索引访问数组元素的正确语法是什么? 我现在所做的是我的直接目标,但我不确定表现是否存在显着差异。 此外,稍后我可能需要使用需要真实数组的操作。
已邀请:

石油百科

赞同来自:

如果该字段不存在,那么点符号的此请求将创建它 hash /一个东西/ 并将值分配给此键 hash. 如果存在该字段并且是一个数组,它将表现为您所期望的。 请参阅此次会话。


> db.arrays.insert/{}/;
> db.arrays.find//;
{ "_id" : ObjectId/"4f518c8b58713e4dbadbfb9f"/ }
> db.arrays.update/{ "_id" : ObjectId/"4f518c8b58713e4dbadbfb9f"/ }, {$set: {"a.0": 123}}/;
> db.arrays.find//;
{ "_id" : ObjectId/"4f518c8b58713e4dbadbfb9f"/, "a" : { "0" : 123 } }


> db.arrays.insert/{a: []}/
> db.arrays.find//;
{ "_id" : ObjectId/"4f518c8b58713e4dbadbfb9f"/, "a" : { "0" : 123 } }
{ "_id" : ObjectId/"4f518cca58713e4dbadbfba0"/, "a" : [ ] }
> db.arrays.update/{ "_id" : ObjectId/"4f518cca58713e4dbadbfba0"/ }, {$set: {"a.0": 123}}/;
> db.arrays.find//;
{ "_id" : ObjectId/"4f518c8b58713e4dbadbfb9f"/, "a" : { "0" : 123 } }
{ "_id" : ObjectId/"4f518cca58713e4dbadbfba0"/, "a" : [ 123 ] }

要回复问题请先登录注册