我在Linux下运行MongoDB 2.4.4。我有一个包含元素的表,每个元素都有一个名为“num”的字段。该字段包含正整数。我的查询有什么看起来像找到元素,哪个“num”字段包含最接近数字的偶数,我想检查一下?
答案 0 :(得分:2)
链接的related question描述了找到“最近”值的两种方法。一种是运行两个查询:找到高于给定数字的最接近的值,并找到最接近的较低值。另一种方法是使用地理空间索引(这需要更改您的架构)。
如果您不介意两个查询,那么您需要对查询进行的唯一修改是添加一个您只想考虑偶数的约束:
db.collection.find ( { "num" : { "$mod" : [ 2, 0 ] } } )
是一种仅查询偶数数字的方法(参见$mod
operator docs)。
您的两个查询将成为:
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的那个。