Rethinkdb使用条件检查进行多次更新

时间:2016-05-05 12:07:59

标签: python rethinkdb rethinkdb-python

我对python中的rethinkdb请求有一点疑问。

我有一个这样的嵌套文档:

{'id': XX, 'markets_tracking': {'market_name_1': { 'latest_update': (timestamp), 'market_data': { 'type_1': {'place1': XX, 'place2': XX}, {'type_2': {'place1':XX, 'place2': XX}}}}}}

本文档由一名或多名工作人员经常更新(在500ms到2-3s之间)。它是针对特定类型更新的位置值。为了确保插入最新的值,我想对字段'lastest_update'执行检查(以确保我提取的新值比rethinkdb中的值更新),然后更新它的位置值和同时如果我更新它,我想更新lastest_update值......

目前,我能够创建这样的条件更新:

r.table('markets_us').get('xxx').update(lambda market:    r.branch(market['market_tracking']['market_name_1']['latest_update'] < time.time(), {'market_tracking':{'type_1':{'place1':XX}}}, {})).run()

现在我只需要在同一时间添加“最新更新”字段的更新,如果可能的话......

谢谢,

1 个答案:

答案 0 :(得分:0)

只需将latest-update添加到对象就可以了。我还认为我发现了一个错误,因为您忘记包含market_datamarket_name_1键。

r.table('markets_us').get('xxx').update(
   lambda market: r.branch(market['market_tracking']['market_name_1']['latest_update'] < time.time(), 
   {
    'market_tracking':{
       'market_name_1': {
         'market_data': {'type_1':{'place1':XX}},
         'latest_update': time.time(),
       }
     },
   }, 
   {})).run()

让我知道这是否适合你!