1

我在 Linux 下运行 MongoDB 2.4.4-pre-。我有一个包含元素的表,每个元素都有一个名为“num”的字段。该字段包含一个正整数。我的查询看起来像什么来查找元素,其中“num”字段包含最接近该数字的偶数,我想检查?

4

1 回答 1

3

链接的相关问题描述了寻找“最近”值的两种方法。一种是运行两个查询:查找高于给定数字的最近值,以及查找最近的较低值。另一种方法是使用地理空间索引(这将需要更改您的架构)。

如果您不介意两个查询,那么您需要对查询进行的唯一修改是添加一个您只想考虑偶数的约束:

  db.collection.find ( { "num" : { "$mod" : [ 2, 0 ] } } )

是一种仅查询偶数的方法(请参阅$mod操作员文档)。

您的两个查询然后变为:

a=db.collection.find({"num":{"$mod":[2,0], $gte:INPUTNUM }}).sort({"num":1}).limit(-1)
b=db.collection.find({"num":{"$mod":[2,0], $lte:INPUTNUM }}).sort({"num":-1}).limit(-1)

你从 a, b 中保留最接近 INPUTNUM 的地方。

于 2013-06-19T17:01:23.773 回答