我有这个集合宣布一些后台任务。对于每个任务,用户可以指定maxExecution
(以秒为单位)。我还有一个名为startedAt
的字段(日期对象),我需要查找应该停止执行的所有文档(到达maxExecution
)。类似于currDate_seconds - maxExecution > startedAt_seconds
。
关于如何用mongo解决这个问题的任何想法?
答案 0 :(得分:0)
在MongoShell中,类似下面的内容将起到作用:
var currentTimeSeconds = new Date().getTime() / 1000;
db.myCollection.find({
$where: '(' + currentTimeSeconds + ' - this.maxExecution) > this.startedAt_seconds)'
});
$where
查询运算符允许您使用javascript查询文档(this
引用文档)。您可以使用任何语言驱动程序进行相同的操作 - 使用当前时间构建$where
查询运算符,您就可以开始使用了。
顺便说一句,我不建议在$where
运算符中检索时间,因为它会随着查询的执行而改变。