要更新mongo数组的元素,我使用的语法如下:
{"$set":{"a.0":1238},{"a.1":402}}
Run Code Online (Sandbox Code Playgroud)
或者,更准确地说,我正在使用C-driver函数调用,我认为这相当于此.这似乎工作正常,但当我看到MongoHub中的对象时,我看到:
a: {"0":1238,"1":402}
Run Code Online (Sandbox Code Playgroud)
代替:
a: [1238,402]
Run Code Online (Sandbox Code Playgroud)
有谁知道用C-driver索引访问数组元素的正确语法是什么?我现在正在做的事情是我的直接目的,但我不确定是否存在重大的性能差异.此外,我稍后可能需要使用需要真正数组的操作.
如果字段不存在,则此点符号查询将其创建为哈希(对象)并将值分配给该哈希的键.如果字段存在且是一个数组,它将按预期运行.见本节.
> 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 ] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4176 次 |
| 最近记录: |