我正在尝试在多个ID上加入两个表(versus
和words
)。我真的不知道如何解释它,所以我只是要表明我的意思。
摘自versus
- 表:
{
"date": 1427675857789,
"hero": "7b88a237-c288-48f1-bf45-2dcd9f812b54",
"id": "017fe06a-e37d-4f23-92a3-bc52b38de4d7",
"nemesis": "e87a6252-6d08-4c5a-b057-2718e8c07d93",
"points": {
"hero": 58659,
"nemesis": 3021
}
}
摘录自words
- 表:
{
"id": "7b88a237-c288-48f1-bf45-2dcd9f812b54" ,
"word": "i"
},
{
"id": "e87a6252-6d08-4c5a-b057-2718e8c07d93" ,
"word": "the"
}
我想加入这两个表,所以得到这样的东西:
{
"date": 1427675857789,
"hero": "i",
"nemesis": "the",
"points": {
"hero": 58659,
"nemesis": 3021
}
}
这就是我到目前为止:r.table("versus").eqJoin("hero", r.table("words")).zip()
,它让我知道了:
{
"date": 1427675857789 ,
"hero": "7b88a237-c288-48f1-bf45-2dcd9f812b54" ,
"id": "7b88a237-c288-48f1-bf45-2dcd9f812b54" ,
"nemesis": "e87a6252-6d08-4c5a-b057-2718e8c07d93" ,
"points": {
"hero": 60507 ,
"nemesis": 3504
} ,
"word": "i"
}
我对如何加入hero
- 行以及nemesis
- 行感到有些困惑。
虽然我对任何显示versus
- 表格中的大部分内容的结果感到满意(如果有id
并不重要)和两个对应于hero
和nemesis
ID。
编辑:我已经找到了一些东西,但现在我只能得到第一份文件,哪种方式违背了我想要做的目的...这里是我得到了什么:r.table("versus").eqJoin("hero", r.table("words")).zip().map(r.row.merge({hero: r.row("word")})).eqJoin("nemesis", r.table("words")).zip().map(r.row.merge({nemesis: r.row("word")})).without(["word", "id"])
答案 0 :(得分:2)
嗯,我做到了......最后!
如果有人感兴趣,这就是我的新ReQL的样子:
r.table("versus").concatMap(function(v){
return r.table("words").getAll(v("hero"), {index: "id"}).map(function(w){
return r.branch(
v("hero").eq(w("id")),
v.merge({hero: w("word")}),
v
)
})
}).concatMap(function(v){
return r.table("words").getAll(v("nemesis"), {index: "id"}).map(function(w){
return r.branch(
v("nemesis").eq(w("id")),
v.merge({nemesis: w("word")}),
v
)
})
}).without("id")