我有一个包含多个项目的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,因此结果只包含其中一个具有最大时间戳值的文件。
答案 0 :(得分:2)
您可以使用新的聚合框架:
$db->col->aggregate(array(
array('$sort' => array('$timestamp' => -1)),
array('$group' => array('_id' => '$srkey',
'timestamp' => array('$first' => '$timestamp')))
));
它应该是该排序组中的第一个,因为您要以DESC方式进行排序。