2013-08-27 92 views
0
{ _id : ObjectId(...), 
    name : "...", 
    addresses : [ { 
       context : "home" , 
       loc : [ 55.5, 42.3 ] 
       } , 
       { 
       context : "office", 
       loc : [ -74 , 44.74 ] 
       } 
       ] 
} 

address.loc爲「2d」索引。MongoDB:具有附加條件的地理空間查詢

我想編寫一個查詢,該查詢應該給我所有位置靠近$的文檔,上下文是office。

I wrote some thing like: 
    db.coll.find({'address.loc':{$near:[lat,lng]}, 'address.context' : "office"}); 

以上查詢並不給我想要的結果。它搜索整個「地址」數組中的位置,然後在整個數組中搜索上下文。

我想搜索相同的數組位置和相同的上下文。我知道這可以通過$ elemMatch完成,但是當我嘗試使用它時,它表示沒有可用的2d索引或2dsphere索引。

我是新來的MongoDB,不知道該怎麼寫我的查詢。

回答

4

我試過查詢,它似乎工作,因爲你打算與$ elemMatch運算符。我認爲問題在於,在查詢中使用了address,而不是addresses。您的查詢應該看起來像:

db.coll.find({ 'addresses.loc':{$near:[lat,lng]}, addresses: { $elemMatch: {context: "office"} } }); 
+0

謝謝Philiq的迴應,但它似乎現在不支持。上述查詢將返回結果,但結果不正確。有幾個JIRA門票在MongoDB中打開SERVER-3325。我無法找到其他人。沒有錯字,因爲我得到的結果,但結果是無效的 – Anup

相關問題