mongodb根据现场计算查找文件

时间:2016-12-07 15:53:22

标签: mongodb

我有这个集合宣布一些后台任务。对于每个任务,用户可以指定maxExecution(以秒为单位)。我还有一个名为startedAt的字段(日期对象),我需要查找应该停止执行的所有文档(到达maxExecution)。类似于currDate_seconds - maxExecution > startedAt_seconds

关于如何用mongo解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

在MongoShell中,类似下面的内容将起到作用:

var currentTimeSeconds = new Date().getTime() / 1000;
db.myCollection.find({
   $where: '(' + currentTimeSeconds + ' - this.maxExecution) > this.startedAt_seconds)'
});

$where查询运算符允许您使用javascript查询文档(this引用文档)。您可以使用任何语言驱动程序进行相同的操作 - 使用当前时间构建$where查询运算符,您就可以开始使用了。

顺便说一句,我不建议在$where运算符中检索时间,因为它会随着查询的执行而改变。