Mongodb 替换mongo db文档中的部分数组
文档结构如下:Mongodb 替换mongo db文档中的部分数组,mongodb,pymongo,bulkupdate,Mongodb,Pymongo,Bulkupdate,文档结构如下: { _id:"1234", values : [ 1,23,... (~ 2000 elements) ] } 其中值表示一些时间序列 我需要更新values数组中的一些元素,我正在寻找一种有效的方法。要更新的元素数量和位置各不相同 我不希望将整个阵列返回到客户端(应用程序层),因此我将执行以下操作: db.coll.find({ "_id": 1234 }) db.coll.update( {"_id": 128244 }, {$set: {
{
_id:"1234",
values : [
1,23,... (~ 2000 elements)
]
}
其中值表示一些时间序列
我需要更新values数组中的一些元素,我正在寻找一种有效的方法。要更新的元素数量和位置各不相同
我不希望将整个阵列返回到客户端(应用程序层),因此我将执行以下操作:
db.coll.find({ "_id": 1234 })
db.coll.update(
{"_id": 128244 },
{$set: {
"values.100": 123,
"values.200": 124
}})
更准确地说,我使用的是pymongo和批量操作
dc = dict()
dc["values.100"] = 102
dc["values.200"] = 103
bulk = db.coll.initialize_ordered_bulk_op()
bulk.find({ "_id": 1234 }).update_one({$set:dc})
....
bulk.execute()
你知道更好的方法吗
是否可以在数组中指示一个范围(从l00到110的值) 您的MongoDB服务器版本是什么?它是3.2.7版。这能回答您的问题吗:谢谢,看起来我们可以通过$exists过滤数组元素,但似乎无法使用它来更新部分阵列。您的MongoDB服务器版本是什么?它是3.2.7版。这能回答您的问题吗:谢谢,看起来我们可以通过$exists筛选数组元素,但似乎不可能使用它来更新数组的一部分