「セッション」の場合、次のような構造があります。
{
"created_at": Tue Apr 22 2014 23:10:52 GMT+00:00 ,
"id": "960e9a45-9a06-43c5-be7f-9144ee3f67c8" ,
"scheduled_time": Wed Apr 23 2014 02:00:00 GMT+00:00 ,
"reservation": {
"created_at": Mon Apr 21 2014 03:00:26 GMT+00:00 ,
"student_id": "8be76323-98ce-488e-9164-611663bc17ec"
}
}
以下を使用して、reservation.student_id で簡単に結合を実行できます。
r.table('sessions').eqJoin(
r.row('reservation')('student_id'),
r.table('users')
)
私の問題は、セッションが必ずしも予約されるとは限らないことです。その属性は、学生が実際にセッションを予約した場合にのみ追加されます。そのため、予約されていないセッションがテーブルに存在する場合、Rethink は教えてくれNo attribute 'reservation' in object
ます。
IRC の誰かが次のことを推奨しました。
r.table('sessions').withFields("reservation").eqJoin(
r.row("reservation")("student_id"),
r.table("users")
)
ただし、このクエリは、現在予約されているセッションのみを取得します。すべてのセッションを取得したいのですが、予約のあるセッションにも参加したいと思います。単一のクエリでこれを行う方法はありますか、または予約なしでセッションを取得するには、最初のクエリの後に 2 番目のクエリを実行する必要がありますか? データを別の方法でモデル化する必要がありますか?