1

文档结构如下:

{
_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 的值)?

4

0 回答 0