从MongoDB获取数据

时间:2013-01-22 10:24:33

标签: php mongodb database

我有一个包含多个项目的MongoDB集合。多个项目具有相同的密钥路径( srkey ),但其时间戳的值不同。我想通过 srkey 获取具有最大时间戳的所有项目。如何使用 php MongoDB完成此操作。

例如,my collection包含以下项目

  • 集合

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

答案 0 :(得分:2)

您可以使用新的聚合框架:

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

它应该是该排序组中的第一个,因为您要以DESC方式进行排序。