2013-08-27 44 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

相关问题