-1

我有一个包含多个项目的 MongoDB 集合。多个项目具有相同的 key 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,因此结果仅包含时间戳值最大的其中一项。

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 回答