Mongo - сортировка во время цикла - PullRequest
0 голосов
/ 18 января 2012

Хорошо, я использую mongo db и на моей странице есть повторяющаяся область:

try {

    $connection = new Mongo();
    $database   = $connection->selectDB($selectDB);
    $collection = $database->selectCollection($selectCollection);

} catch(MongoConnectionException $e) {
    die("Failed to connect to database ".$e->getMessage());
}

$cursor = $collection->find();

while ($cursor->hasNext()): $document = $cursor->getNext(); 


                        echo $document['fieldName']."<br/>";
                        echo $document['fieldType']."<br/>";
                        echo $document['fieldLength']."<br/>";
                        echo $document['user_id']."<br/>";
                        echo $document['order']."<br/>";
                        echo "<hr/>";

 endwhile;

это работает нормально, но сейчас я пытаюсь отсортировать по user_id.Я пробовал это:

 try {

    $connection = new Mongo();
    $database   = $connection->selectDB($selectDB);
    $collection = $database->selectCollection($selectCollection);

} catch(MongoConnectionException $e) {
    die("Failed to connect to database ".$e->getMessage());
}

$cursor = $collection->find().sort({user_id: -1});

while ($cursor->hasNext()): $document = $cursor->getNext(); 


                        echo $document['fieldName']."<br/>";
                        echo $document['fieldType']."<br/>";
                        echo $document['fieldLength']."<br/>";
                        echo $document['user_id']."<br/>";
                        echo $document['order']."<br/>";
                        echo "<hr/>";

 endwhile;

Строка, которую я изменил, является: $ cursor = $ collection-> find (). Sort ({user_id: -1});

яполучая ошибку php когда id o это.Может кто-нибудь показать мне правильный синтаксис для сортировки этого массива.

Я также пытался:

$cursor = $collection->find()->sort({user_id: -1});

and 

 $cursor = $collection->find();
 $cursor = $cursor.sort({user_id: -1});

Любая помощь будет оценена.спасибо.

ответ найден *

$cursor = $collection->find();
$cursor->sort(array('user_id' => 1));

1 Ответ

5 голосов
/ 18 января 2012

Я думаю, что это синтаксическая ошибка PHP:

$collection->find().sort({user_id: -1})

неверный PHP. В PHP оператор точки (".") используется для объединения строк, а не для доступа к членам объекта. Для этого используйте оператор стрелки («->»). Кроме того, «{user_id: -1}» не является правильным синтаксисом для ассоциативного массива в PHP. Для этого используйте «array("user_id" => -1)».

Это дает нам:

$collection->find()->sort(array("user_id" => -1))

который, я считаю, должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...