我有一个文件
{ key : 'key1', value : 'value1', update_time : 100 }
我只想用最近(更大)的更新时间来改变。我现在正在做的是:
def update_key1(new_value, new_time):
record = find_one( { key : 'key1' } )
if not record or record['update_time'] < new_time:
update( { key : 'key1', value : new_value, update_time : new_time }, upsert=True)
显然这是到数据库的额外往返,但更重要的是文档上没有锁定,并发调用可能导致数据库中剩余的 new_time 值较低。有没有办法仅在条件为真时执行 upsert?
编辑:只是为了澄清,目的不是为每个键创建多个文档,然后对查找进行排序。虽然这可以解决我的问题,但这些值会发生很大变化并且会浪费很多空间。