Как реализовать условия по внутреннему присоединению в rethinkdb
У меня есть этот запрос:
r.db('test').table('users').getAll("amazon_11",{index:"parent"})
.innerJoin(r.table("posts"),function (posts, user) {return posts("employeeId").eq(user("employeeId"));}).zip()
.innerJoin(r.table("posts_facebook"),function(left,right){return left('id').eq(right('post_id'))}).zip()
я хочу добавить условие в поле отметки времени в коллекции posts_facebook
,
Я создал индекс в поле отметки времени.
Вот что я думаю:
r.db('test').table('users').getAll("amazon_11",{index:"parent"})
.innerJoin(r.table("posts"),function (posts, user) {return posts("employeeId").eq(user("employeeId"));}).zip()
.innerJoin(r.table("posts_facebook"),function(left,right){return left('id').eq(right('post_id'))}).zip()
.between(fromDate,toDate,{index:"approvedAt"})
Ошибка, полученная от rethinkdb, выглядит следующим образом:
e: ожидаемый тип TABLE_SLICE, но найденный SEQUENCE: VALUE SEQUENCE в:
r.db ("test"). table ("users"). getAll ("amazon_11", {"index": "parent"}). innerJoin (r.table ("posts"), функция (var_43, var_44) { return var_43("employeeId").eq(var_44("employeeId")); }).zip().innerJoin(r.table("posts_facebook"), функция (var_45, var_46) { return var_45("id")).eq(var_46("post_id")); }).zip(). Между ("2016-08-01 11:31:40", "2016-08-01 11:32:00", {"index": " ApproAt "})
Формат даты: ГГГГ-ММ-ДД ч: я: с
1 ответ
Если вы уже используете innerJoin
Я бы просто положил, что в теле второго innerJoin
лайк .innerJoin(r.table("posts_facebook"),function(left,right){return left('id').eq(right('post_id')).and(right('approvedAt').gt(fromDate)).and(right('approvedAt').lt(toDate));})
, Обратите внимание, что innerJoin
будет очень медленным на больших столах, так что вы можете посмотреть на использование concatMap
вместо.