使用如下文档结构:
{
_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的值)?