0

我有一个 mongo 集合,其中包含两个字段“fieldA”和“fieldB”的文档,它们是时间戳,我需要获取所有文档“(fieldB-fieldA)/6000 > 2”......所以我在寻找对于某些功能,为了做到这一点......

我在一些帖子中看到了函数“$subtract”,但这似乎是在 mongo 2.1.x 中,目前我正在使用 2.0.x(它是稳定的),知道如何用 2.0.x 做到这一点吗?还是我需要创建一个新字段?或者我只能在应用程序端这样做吗?

顺便说一句,我正在使用 ruby​​ mongo 驱动程序...

4

1 回答 1

1

您可以使用 $where 运算符将查询表达式指定为 Javascript。在外壳中:

db.myCollection.find( { $where: "(this.fieldB - this.fieldA)/6000 > 2" } );

但是,您应该注意,Javascript 的执行速度可能非常慢。如果这是一次性查询, $where 可能是一个不错的解决方案。否则,将等式的结果存储在单独的字段中是确保查询及时的最佳方式。

$where 运算符的附加信息: http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

于 2012-06-13T14:55:24.407 回答