2013-06-19 161 views
0

我在Linux下運行MongoDB 2.4.4-pre。我有一個表格,其中每個元素都有一個名爲「num」的字段。該字段包含一個正整數。有什麼我的查詢看起來像查找元素,其中「num」字段包含數字的最接近的偶數,我想檢查?查找距離MongoDB最近的偶數

+0

什麼範圍將被認爲是附近? – Sammaye

+0

沒有範圍。我只需要找到最近的一個。 – JustLogin

+0

請參閱:http://stackoverflow.com/questions/13275491/mongodb-find-document-with-closest-integer-value –

回答

2

鏈接related question描述了找到「最近」值的兩種方法。一種是運行兩個查詢:找到比給定數字更高的最近值,並找到最接近的較低值。另一種方法是使用地理空間索引(這將需要更改您的模式)。

如果你不介意的話,然後兩個查詢你需要在查詢的唯一修改是增加一個約束,你只需要考慮連號:

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

是用來查詢方式只有偶數的數字(請參見$mod operator文檔)。

你兩個查詢則成爲:

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) 

,你從保留,B一個最最接近INPUTNUM。

+0

只有當您知道一些關於數字範圍的附加信息時,才能對其進行優化。 –