MongoDB:具有附加条件的地理空间查询

时间:2013-08-27 07:16:35

标签: mongodb mongoose geospatial

{ _id : ObjectId(...),
  name : "...",
  addresses : [ {
                 context : "home" ,
                 loc : [ 55.5, 42.3 ]
                } ,
                {
                 context : "office",
                 loc : [ -74 , 44.74 ]
                }
              ]
}

address.loc被索引为“2d”。

我想编写一个查询,该查询应该为我提供所有位于$附近的文档,并且上下文是办公室。

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

以上查询不会给我想要的结果。它在整个“地址”数组中搜索位置,然后在整个数组中搜索上下文。

我想搜索相同的数组位置和相同的上下文。我知道它可以通过$ elemMatch完成,但是当我尝试使用它时,它表示没有可用的2d索引或2dsphere索引。

我是MongoDB的新手,不知道应该如何编写查询。

1 个答案:

答案 0 :(得分:4)

我已经尝试了查询,它似乎与你打算使用$ elemMatch运算符一样工作。我认为问题是您的查询中有一个拼写错误,其中address代替addresses。您的查询应如下所示:

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