0

直接使用时正确排序

db.users.find({currentloc : {$nearSphere : [115.22804,-8.69914]}})

但是当从 PHP 执行时,它看起来像按 _id 排序

$users = $this->m->mappt->users;
$results = $users->find(
    array(
        'currentloc' => array('$nearSphere' => array(115.22804,-8.69914))

    );
$arrayresult = iterator_to_array($results);

有任何想法吗 ?

4

2 回答 2

0

您的查询看起来不错。我能想到几点:

  • 您没有2dsphere索引,而您在 shell 中确实拥有该索引
  • iterator_to_array()搞砸了——如果你做一个正常的foreach(),你会让它们按正确的顺序排列吗?
于 2013-07-30T07:58:08.990 回答
0

阿迪,你可以从这里得到想法。您可以尝试将变量名称用于地理值。

其他尝试这样,

$collection->find(Array("point" => Array('$within' => Array('$center'=> Array(Array(151.1955562233925,-33.87107475181752), 0.1/111 ) ) )));
于 2013-07-30T06:50:03.593 回答