mongodb и php как выводить результаты используя geoNear - PullRequest
0 голосов
/ 04 февраля 2012

Я пытаюсь вывести результаты, используя команду geoNear, используя PHP, но я постоянно получаю один документ, который я могу получить, используя print_r.

Это мой пример, поиск 1 работает нормально, но поиск 2 ничего не делает.

    <?php
    $mongo = new Mongo();

    $collection = $mongo->selectDB('users')->selectCollection('user');

    $lng = -2.28;
    $lat = 53.46;
    $lnglat = array($lng, $lat);
    $query = array('loc' => array('$near' => $lnglat));

    //search 1
    $cursor = $collection->find($query)->limit(10);


    while($cursor->hasNext()){
        $user = $cursor->getNext();
        echo $user['username'] . "<br />";
    };

    //search 2
    $cursor2 = $mongo->selectDB('users')->command(array(
                    'geoNear' => 'user',
                    'near' => $lnglat,
                    'spherical' => true,
                    'num' => 10 )); 

    while($cursor2->hasNext()){
        $user = $cursor2->getNext();
        echo $user['username'] . "<br />";
    };
    ?>

1 Ответ

2 голосов
/ 07 февраля 2012

command() не возвращает курсор, только ассоциативный массив.Просто сделай:

$result = $mongo->selectDB('users')->command(array(
                'geoNear' => 'user',
                'near' => $lnglat,
                'spherical' => true,
                'num' => 10 )); 

var_dump($result);
...