# 1
Таким образом, в основном вы хотите, чтобы все документы, которые до сих пор не истек? (valid_to
) в будущем?
Для этого вы должны обязательно использовать функции времени/даты RethinkDB. Для этого вам нужно создать экземпляр времени с r.time
или r. ISO8601
. Примером этого является:
r.table('tokens')
.insert({
"valid_from": r.ISO8601("2011-03-17T08:55:04-07:00"),
"valid_to": r.ISO8601("2017-03-17T08:55:04-07:00")
})
После того, как вы вставили/обновить документы, используя эти функции, вы можете запросить их с помощью функции времени/даты RethinkDB в. Я вы хотите, чтобы все документы, в которых valid_to
находится в будущем, вы можете сделать это:
r.table('tokens')
.filter(r.row['valid_to'] > r.now())
Если вы хотите, чтобы получить все документы, где valid_to
находится в будущем и valid_from
в прошлом, вы можете сделать это:
r.table('tokens')
.filter(r.row['valid_to'] > r.now())
.filter(r.row['valid_from'] < r.now())
# 2
Если оба эти свойства (valid_to
и valid_from
) по времени/дате объектов, вы можете добавить days
свойство к каждому документу, выполнив следующие действия:
r.table('tokens')
.merge({
// Subtract the two properties. Divide by seconds * minutes * hours
"days": (r.row['valid_to'] - r.row['valid_from'])/(60 * 60 * 24)
})
Питон Код
import rethinkdb as r
conn = r.connect()
cursor = r.table('30715780').filter(r.row['valid_to'] < r.now()).count().run(conn)
print list(cursor)
Хорхе, я следую вашему примеру здесь, но по какой-то причине, данные не возвращаются при работе: г. table («токены»). filter (r.row ['valid_to']> r.now()). Любая идея почему? – Gai
ОК. Мне удалось заставить его работать. Я думаю, что синтаксис был изменен: r.table ('tokens'). Filter (r.row ('valid_to'). Gt (r.now())) – Gai
На каком языке вы используете? '>' и '<' работают только на некоторых языках, так как это происходит при перегрузке оператора. JavaScript не является одним из этих языков. –