Javascript 在同一个表中的多个ID上联接
我正在尝试在多个ID上连接两个表(Javascript 在同一个表中的多个ID上联接,javascript,join,rethinkdb,Javascript,Join,Rethinkdb,我正在尝试在多个ID上连接两个表(与和单词)。我真的不知道该怎么解释,所以我想展示一下我的意思 与-表的摘录: { "date": 1427675857789, "hero": "7b88a237-c288-48f1-bf45-2dcd9f812b54", "id": "017fe06a-e37d-4f23-92a3-bc52b38de4d7", "nemesis": "e87a6252-6d08-4c5a-b057-2718e8c07d93", "
与
和单词
)。我真的不知道该怎么解释,所以我想展示一下我的意思
与
-表的摘录:
{
"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
}
}
{
"id": "7b88a237-c288-48f1-bf45-2dcd9f812b54" ,
"word": "i"
},
{
"id": "e87a6252-6d08-4c5a-b057-2718e8c07d93" ,
"word": "the"
}
摘自单词
-表格:
{
"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
}
}
{
"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(“vs”).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"
}
我有点困惑,我怎么才能加入到英雄行和复仇女神行
尽管我很高兴看到与表中的大多数内容(不管id
是否存在)以及与hero
和nemesis
id相对应的两个词
编辑:我想了些什么,但现在我只能得到第一份文档,这与我想做的事情的目的背道而驰。。。以下是我得到的:r.table(“vs”).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”)))))。没有([“word”,“id”))
好吧,我终于做到了
如果有人感兴趣,这就是我的新需求:
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")