1

With a document structure like:

{
_id:"1234",
values : [
    1,23,... (~ 2000 elements)  
]
}

where values represent some time series

I need to update some elements in the values array and I'm looking for an efficient way to do it. The number of elements and the positions to update vary.

I would not like to get the whole array back to the client (application layer) so i'm doing something like :

db.coll.find({ "_id": 1234 })

db.coll.update(
    {"_id": 128244 }, 
    {$set: {
        "values.100": 123,
        "values.200": 124
    }})

To be more precise, i'm using pymongo and bulk operations

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()

Would you know some better way to do it ?

Would it be possible to indicate a range in the array like (values from l00 to 110) ?

tokiloutok
  • 467
  • 5
  • 14

0 Answers0