2013-01-22 95 views
-1

我有一個包含項目數的MongoDB集合。多個項目具有相同的密鑰(srkey),但它們的值時間戳是不同的。我想通過srkey取最大的所有項目時間戳。如何用php MongoDB來完成這個任務。從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} 
    

獲取的輸出必須

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

項目1和3具有相同srkey ,所以t他的結果只包含具有最大時間戳值的其中一個。

+0

你能告訴我們你的意思嗎?我無法完全描述這從描述 – Sammaye

+0

'我有一個MongoDB集合沒有項目' - 你想使用查找空集合嗎? –

+0

我想你沒有理解你自己的問題 –

回答

2

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

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

應該是:第一,排序組的,因爲你是在一個降序排序方式。

+0

這給我服務器錯誤 –

+0

@HarishAnchu你是什麼意思的服務器錯誤?你能發佈實際的錯誤嗎? – Sammaye

+0

用try catch測試了這段代碼,但它無法捕獲錯誤。 –