Mongo - 排序循环

时间:2012-01-17 22:38:17

标签: php sorting mongodb

好的我正在使用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-&gt; find()。sort({user_id:-1});

我在id o时遇到php错误。有人可以告诉我正确的syntex来让这个数组排序。

我也尝试过:

$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 个答案:

答案 0 :(得分:5)

我认为这是一个PHP语法错误:

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

是无效的PHP。在PHP中,点运算符(“.”)用于连接字符串,而不是访问对象成员。为此,请使用箭头运算符(“->”)。此外,“{user_id: -1}”不是PHP中关联数组的正确语法。为此,请使用“array("user_id" => -1)”。

这给了我们:

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

我认为应该有效。