0

私はrethinkdbが初めてで、簡単な問題があります。次のオブジェクト構造があるとします。

表 A:
[{
    'id': '1',
    'b_list': ['11', '12']
}]
表 B:
[{
    'id': '11',
    '値': 'somevalue1'
},{
    'id': '12',
    '値': 'somevalue2'
}]

したがって、「A」のインスタンスは、2 つの「B」インスタンスとの関係を維持します。

次の応答を取得するには、rethinkdb でどのクエリを実行する必要がありますか?

[{
    'id': '1',
    'b_list': [
        {
            'id': '11',
            '値': 'somevalue1'
        },{
            'id': '12',
            '値': 'somevalue2'
        }
    ]
}]

応答で ID の代わりに B のインスタンスを表示したいのですが、この変更を保存したくありません。

4

1 に答える 1

1

これを行う最良の方法は、次のeq_joinようなものです。

r.table("A")
  .map(lambda x: 
    x.merge({
      "b_list" :
        x["b_list"].eq_join(lambda x: x, r.table("B"))["right"]})

単一のドキュメントの場合:

r.table("A").get(pk)
  .do(lambda x: 
    x.merge({
      "b_list" :
        x["b_list"].eq_join(lambda x: x, r.table("B"))["right"]})
于 2013-12-08T21:08:23.907 に答える