1

収集した「ページ」から個別のレコードを見つけたい。

私は試した:

$Volume_numbers = Pages::find(array('fields'=>'DISTINCT volume_number'));       

私も試しました:

  $params = array('conditions'=>array(
        'distinct' => 'pages',
        'key' => 'volume_number',
        ));
    $pageVolumes = Pages::all($params);

MongoDBのドキュメントと回答の1つで提案されているように。

これをMongoで実行しようとすると、正しい結果が得られます

> db.runCommand({distinct:'pages',key:'volume_number'})
 {
    "values" : [
            22,
            38
    ],
    "stats" : {
            "n" : 1084,
            "nscanned" : 1084,
            "nscannedObjects" : 1084,
            "timems" : 25,
            "cursor" : "BasicCursor"
    },
    "ok" : 1
}
4

2 に答える 2

1

コマンドlithium\data\source\MongoDbにラッパーメソッドがあるとは思いません。distinctただし、MongoDbクラスは PHP ドライバーのMongoおよびMongoDBクラスを構成するため、次の操作を実行できます。

// Where $mongodb is an instance of lithium\data\source\MongoDb
$result = $mongodb->connection->command(array(
    'distinct' => 'pages',
    'key' => 'volume_number',
));

別の方法として、Nate Abele が Lithium へのプル リクエストを歓迎しdistinctて、read()メソッドに のサポートを追加することを歓迎すると確信していますgroup(実際、現在のコードは、これを実装するための適切な出発点になります)。

于 2012-11-09T16:50:21.537 に答える
0

このコードは私のために働いた!

$pageVolumes = Pages::connection()->connection->command(array(
    'distinct' => 'pages',
    'key' => 'volume_number',
));     

結果:

Array
(
    [values] => Array
        (
            [0] => 22
            [1] => 38
        )

    [stats] => Array
        (
            [n] => 1084
            [nscanned] => 1084
            [nscannedObjects] => 1084
            [timems] => 3
            [cursor] => BasicCursor
        )

    [ok] => 1
)
于 2012-11-10T02:21:42.613 に答える