3

私の問題は、ある種の部門でデータベース検索(選択)を実行したいということです。^^

それは私のコードでは次のように見えます:

$return = $db->selectCollection( $category )->find(array("time" > $time_lastweek))->sort(array("rating/count_raitings" => 1,"count_raitings" => 1))->limit(10);

私は以前にSQL(PDO)で次のようにこれを行いました:

$last_week = $dbh->prepare('SELECT * FROM '.$category.' WHERE time > :zeit ORDER BY rating/count_raitings ASC, count_raitings ASC LIMIT 10');
        $last_week->execute(array(':zeit' => $time_lastweek));
        $return = $last_week->fetchAll(PDO::FETCH_CLASS);

誰か助けてくれませんか。MongoDBのことは私にはうまくいきません。

4

1 に答える 1

2

集約フレームワークを使用してシェルでそれを行う方法は次のとおりです(PHPに変換するのは簡単です)。

db.category.aggregate([
    // Filter the docs to those where time > time_lastweek
    { $match: {time: {$gt: time_lastweek}}},

    // Identify what to include from each doc, adding a computed field for the division
    { $project: {
        time: 1,
        rating: 1,
        count_raitings: 1,
        div_val: {$divide: ['$rating', '$count_raitings']}
    } },

    // Sort the results
    { $sort: {div_val: 1, count_raitings: 1}},

    // Limit to the top 10
    { $limit: 10 }
])
于 2012-11-19T20:13:01.913 に答える