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筛选数组元素,但似乎不可能使用它来更新数组的一部分