2
私はrethinkdbに3つのテーブルの構造を持っています。RethinkDBは結合結果を使用して値を更新します
- フィード - 製品名およびカバレッジ情報を有する
{ "製品": "名前-X"、 "カバレッジ": "3%"}
- クリーン - 製品名から同義語のリスト
{ "製品": "名前-X"、 "同義": "名前-X"、 "X"、 "製品X"]}
- デバイス - のリストデバイスといくつかの追加情報
{ "製品": "製品X"、 "カバレッジ": "0%"}、{ "製品": "製品Y"、 "カバレッジ"。 "1%"}、{"製品": "製品-x"、 "カバレッジ": "0%"}
フィードテーブルを定期的に更新してから、デバイステーブルを更新するクエリを実行します。
以下を実行すると、すべてのテーブルをマージして、各デバイスから適切な範囲を取得できます。
r.db('devices').table('cleaning').innerJoin(r.db('devices').table('feed'),
function(cleaningRow, feedRow) {
return cleaningRow('synonyms').contains(feedRow('product'))
}).zip().innerJoin(r.db('devices').table('devices').hasFields('product'),
function(mergeRow, devicesRow) {
return mergeRow('synonyms').contains(devicesRow('product'))
}).zip()
どのように私は正しい情報でデバイステーブルを更新することができますか?今のところ、私はクエリで値を取得することしかできませんでした。
デバイステーブルが非常に大きい、と私たちは、製品名は、我々が「クリーニング」テーブルを使用している理由です、ものになるかどうかのコントロールを持っていません。また、デバイスのテーブルに「同じ」デバイスが複数存在する可能性があります。