-1

アイテム数のMongoDBコレクションがあります。複数のアイテムのキー vlue( srkey )は同じですが、タイムスタンプの値が異なります。タイムスタンプが最大のsrkeyですべてのアイテムを取得したい。php MongoDBでこれを達成する方法。

たとえば、私のコレクションには次のアイテムが含まれています

  • コレクション

    item1 : {srkey:a,timestamp:1358675171}
    item2 : {srkey:b,timestamp:1358675175}
    item3 : {srkey:a,timestamp:1358676849}
    item4 : {srkey:d,timestamp:1358675213}
    item5 : {srkey:b,timestamp:1358676111}
    

fetch の出力は

    item3 : {srkey:a,timestamp:1358676849}
    item4 : {srkey:d,timestamp:1358675213}
    item5 : {srkey:b,timestamp:1358676111}

項目 1 と 3 は同じ srkey を持っているため、結果にはタイムスタンプ値が最大の 1 つだけが含まれます。

4

1 に答える 1

2

これには、新しい集計フレームワークを使用できます。

$db->col->aggregate(array(
    array('$sort' => array('$timestamp' => -1)),
    array('$group' => array('_id' => '$srkey', 
        'timestamp' => array('$first' => '$timestamp')))
));

DESC 方式でソートしているため、ソートされたグループの最初のグループにする必要があります。

于 2013-01-22T11:05:54.693 に答える