是否可以计算文档服务器端中两个日期之间的差异并对其进行查询?(就像 SQL 的DATEDIFF
函数)
假设我有很多这样的文件:
>>> db.collection.find()
[
{ "id" : ObjectId("1"),
"starttime" : ISODate("2011-12-01T05:01:00"), # 5:01 AM
"endtime" : ISODate("2011-12-01T05:02:00") # 5:02 AM
},
{ "id" : ObjectId("2"),
"starttime" : ISODate("2011-12-01T06:01:00"), # 6:01:00 AM
"endtime" : ISODate("2011-12-01T06:01:30") # 6:01:30 AM
}
]
有没有办法实现类似的东西?
返回时差:
>>> db.collection.date_difference_seconds(endtime, starttime)
[60, 30]
或查询:
>>> db.collection.find("timediff(endtime-starttime) < 40 seconds")
[
{ "id" : ObjectId("2"), ...} # Just second document (30s diff)
]
我已经阅读了有关服务器端 JS和的信息eval()
,但文档说不推荐这些 - 它们是最佳选择吗?
(我显然可以将时间差以秒为单位添加为附加字段("time_diff": 30
),或者在 Python 客户端计算差异,但我想知道它是否可能在服务器端)
客户端计算:
>>> for doc in (collection.find(None, {'starttime': 1, 'endtime': 1 }))
doc['endtime']-doc['startime']
0:01:00.000000
0:00:30.000000