当使用mongodb的geoNear命令和其他查询来过滤结果时,我遇到过一些问题。以下查询是用rockmongo进行的。带过滤器的mongodb geoNear命令
在我的收藏“poi”中,文档具有“profiles”,这是一个包含objectids的数组。当搜索它们时:
{
geoNear : "poi",
near : [19,47],
query : {profiles : ObjectId("511f360901c610e813000004")}
}
我没有得到任何结果。
Response from server: { "ns": "local.poi", "near": "1100010010100011101101101111001010100011101101101111", "results": [
], "stats": {
"time": NumberInt(2),
"btreelocs": NumberInt(0),
"nscanned": NumberInt(510),
"objectsLoaded": NumberInt(510),
"avgDistance": 0,
"maxDistance": 0 }, "ok": 1 }
然而,如果没有查询,甚至一个简单的{概况:物件(“511f360901c610e813000004”)}查询我得到预期的结果。
的另一个问题是,当我有大约一半与“名”“X文件的”,而另一半为“Y”,查询
{
geoNear : "poi",
near : [47,19.5],
query : {"$and" : [{name : { "$in" : [/.*y.*/i]}}]}
}
没有给出结果,当简单{” $和“:[{name:{”$ in“:[/。 yy。y。/i]}}]}给他们。这个示例查询实际上可以非常简单,但结果没有区别,这更像我在项目中的实际查询。
当我使用PHP进行尝试时,无论传递哪个附加查询,我都会得到结果,因此每个文档都按距离排序。
请帮我看看我是否做错了。
当然,像{name:“x”}这样的其他过滤查询可以完美地工作,我正在努力应对这些“更复杂”的问题。 – azyoot 2013-02-18 15:30:01