Php 带过滤器的mongodb geoNear命令

Php 带过滤器的mongodb geoNear命令,php,mongodb,Php,Mongodb,在使用mongodb的geoNear命令和附加查询来过滤结果时,我遇到了一些问题。以下是对rockmongo的查询 在我的集合“poi”中,文档具有“profiles”,这是一个包含objectid的数组。搜索它们时: { geoNear : "poi", near : [19,47], query : {profiles : ObjectId("511f360901c610e813000004")} } 我没有结果 Response from server: { "ns":

在使用mongodb的geoNear命令和附加查询来过滤结果时,我遇到了一些问题。以下是对rockmongo的查询

在我的集合“poi”中,文档具有“profiles”,这是一个包含objectid的数组。搜索它们时:

{
  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  }
但是,如果没有查询,或者即使使用简单的{profiles:ObjectId(“511f360901c610e813000004”)}查询,我也会得到预期的结果

另一个问题是,当我有大约一半的文档带有“name”“x”,另一半带有“y”时,查询

{
  geoNear : "poi",
  near : [47,19.5],
  query : {"$and" : [{name : { "$in" : [/.*y.*/i]}}]}
}
当简单的{“$and”:[{name:{“$in”:[/.y./i]}}}给出结果时,不给出任何结果。这个示例查询实际上可以非常简单,尽管结果没有区别,这更像我在项目中的实际查询

当我用PHP尝试这些方法时,不管传递的是什么额外的查询,我都会得到结果,所以每个文档都是按距离排序的


请帮我找出我是否做错了。

好的,问题出在PHP驱动程序上。我发现它在mongo shell中工作,所以我切换回1.3.1,现在它工作了

当然,像{name:“x”}这样的过滤查询工作得很好,我正在努力处理这些“更复杂”的查询。对参数和结果没有特殊处理。