№1
Итак, в основном вам нужны все документы, срок действия которых еще не истек? (valid_to
) в будущем?
Для этого вам обязательно нужно использовать функции даты и времени RethinkDB. Однако для этого вам необходимо создать экземпляр времени с помощью r.time
или _ 3_. Пример этого:
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)
})
Код Python
import rethinkdb as r
conn = r.connect()
cursor = r.table('30715780').filter(r.row['valid_to'] < r.now()).count().run(conn)
print list(cursor)
person
Jorge Silva
schedule
08.06.2015