2016-05-05 5 views
1

私はpythonでrethinkdbリクエストについて少し質問しました。条件付きチェックで複数の更新を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}}}}}} 

この文書は、一つ以上の労働者が(500ミリ秒と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() 

をそして今、私はちょうど更新を追加する必要があります可能であれば、フィールド「最新の更新」も可能です。

ありがとう、

答えて

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

これがうまくいくかどうか教えてください。