0

我是 rethinkdb 的新手,遇到了简单的麻烦。假设我有以下对象结构:

表 A:
[{
    'id': '1',
    'b_list': ['11', '12']
}]
表 B:
[{
    'id': '11',
    “价值”:“一些价值1”
},{
    'id': '12',
    “价值”:“一些价值2”
}]

因此“A”的实例与两个“B”实例保持关系。

我应该在 rethinkdb 中执行什么查询来检索以下响应?

[{
    'id': '1',
    'b_list':[
        {
            'id': '11',
            “价值”:“一些价值1”
        },{
            'id': '12',
            “价值”:“一些价值2”
        }
    ]
}]

我希望看到 B 的实例而不是它们的 id 作为响应,并且我不希望保存此更改。

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 回答