gpt4 book ai didi

mongodb - 使用 c-driver 按索引更新 mongodb 数组元素

转载 作者:可可西里 更新时间:2023-11-01 09:59:47 36 4
gpt4 key购买 nike

为了更新 mongo 数组的元素,我使用了如下语法:

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

或者,更准确地说,我使用的是我认为与之等效的 C 驱动程序函数调用。这似乎工作正常,但当我查看 MongoHub 中的对象时,我看到:

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

代替:

a: [1238,402]

有谁知道用 C 驱动程序按索引访问数组元素的正确语法是什么?我现在所做的是为了我的直接目的,但我不确定是否存在显着的性能差异。另外,我以后可能需要使用需要真正数组的操作。

最佳答案

如果某个字段不存在,则此点符号查询会将其创建为散列(对象)并将值分配给该散列的键。如果 field 存在并且是一个数组,它将按照您的预期运行。请参阅此 session 。

> 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 ] }

关于mongodb - 使用 c-driver 按索引更新 mongodb 数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542635/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com