#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)
})
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)