2015-09-01 45 views
1

我試圖從我的收藏中找到數據,並以最接近到離geoJSON點最遠的順序顯示,它基於當時的帖子位置(loc :):創建。

我已經進入蒙戈控制檯,以確保他們正在建立索引2dsphere跑

db.my-collection.createIndex({ loc : "2dsphere" }) 

現在無論何時我使用我的find命令以上述順序列出帖子,只有$ maxDistance可以工作,而$ minDistance對於它們的排列方式完全沒有影響。下面是代碼:

return posts.find({ 
     loc: 
      { $near : 
        { 
         $geometry:{ type:"Point", coordinates:[ lng, lat]}, 
         $maxDistance: maxDistance, 
         $minDistance: minDistance 
        } 
      }, 
     }); 

} 

我相信我已經爲有關MongoDB(http://docs.mongodb.org/manual/reference/operator/query/near/)描述所做的一切,但現在看來,我失去了一些東西。

+0

我不明白。如果你正在嘗試訂購它們,那麼你需要指定一個'sort'選項。你使用'maxDistance'和'minDistance'是一個硬約束(不要顯示任何不符合這些標準的結果),而不是排序順序。 –

+0

如果我沒有弄錯,$ near命令會自動對它們進行排序。問題是,當它對它們進行排序時,它沒有考慮到郵件需要顯示的$ minDistance,以便它們最終顯示出來。 – Isaac

+0

當你在mongodb中直接執行查詢時,你會得到相同的結果嗎?即,這是一個流星問題還是一個mongo問題? –

回答

0

爲了同時獲得$ minDistance纔會& $ maxDistance工作,我有以下行添加到代碼:

Collection._ensureIndex({'loc':'2dsphere'}); 
+0

@lsaac即使索引爲'2dsphere'仍然沒有得到結果? –

相關問題