0
다음과 같이 하나는 호스트 용이고 다른 하나는 사용자 용입니다.RethinkDB 테이블 조인
호스트 :
{
"host": "server1",
"address": "192.168.1.22", 'users': ["Magneto", "Professor Xavier", "Storm"]
},
{
"host": "server2",
"address": "192.168.1.23", 'users': ["Storm"]
},
{
"host": "server3",
"address": "192.168.1.24", 'users': ["Magneto", "Storm"]
}
사용자 :
{
"hero": "Magneto",
"name": "Max Eisenhardt",
"aka": ["Magnus", "Erik Lehnsherr", "Lehnsherr"],
"magazine_titles": ["Alpha Flight", "Avengers", "Avengers West Coast"]
},
{
"hero": "Professor Xavier",
"name": "Charles Francis Xavier",
"magazine_titles": ["Alpha Flight", "Avengers", "Bishop", "Defenders"]
},
{
"hero": "Storm",
"name": "Ororo Monroe",
"magazine_titles": ["Amazing Spider-Man vs. Wolverine", "Excalibur",
"Fantastic Four", "Iron Fist"]
}
은 내가이 사용자가 궁극적으로 각 서버에 대해이 같은 것을 얻기 위해 얻을 수있는 호스트에서 쿼리에 가입 만들려고 해요 . 기본적으로 사용자 데이터를 서버 문서에 결합합니다. 예 :
{
"host": "server3",
"address": "192.168.1.24",
"users": [
{
"hero": "Storm",
"name": "Ororo Monroe",
"magazine_titles": [
"Amazing Spider-Man vs. Wolverine",
"Excalibur",
"Fantastic Four",
"Iron Fist"
]
},
{
"hero": "Magneto",
"name": "Max Eisenhardt",
"aka": [
"Magnus",
"Erik Lehnsherr",
"Lehnsherr"
],
"magazine_titles": [
"Alpha Flight",
"Avengers",
"Avengers West Coast"
]
}
]
}
사용자가 서버 "users"배열에 포함되어 있기 때문에 여기에서 내 쿼리를 어떻게 수행해야합니까?
r.db('data').table("hosts")
.concatMap(function (x) {
return x("users").map(function (usr) {
return x.merge({users: usr});
});
}).eqJoin("users", r.db('data').table("users"))