2012-07-06 39 views
0

我有一個代表虛擬拍賣的每個文件的集合。我想查找給定時間段內最常用的物品ID。在SQL中,我想SELECT item, COUNT(*) as countGROUP BY item和通常的排序和限制。有沒有與此相當的mongodb?mongodb:字段按發生次數排序

回答

2

MongoDB在這裏有幾個選項。

這些選項中的每一個都有不同的語法和不同的速度。

在這些情況下,您可能會發現這些選項相對較慢。 Map/Reduce作業旨在「離線」運行,通常作爲「cron作業」或「計劃任務」。請注意,如果您計劃執行此操作,您可能需要預先彙總此數據。

+0

我現在有一個每小時運行一次到一個單獨表格的Map/Reduce操作。 – 2012-07-06 23:56:09

0

或者您可以使用MapReduce,然後對輸出集合進行排序,或者您可以使用命令group,但是您需要在客戶端執行大部分排序和限制。

舉例group命令:

db.coll.group(
     {key: { a:true, b:true }, 
     cond: { active:1 }, 
     reduce: function(obj,prev) { prev.csum += obj.c; }, 
     initial: { csum: 0 } 
     }); 

另外值得一提的是在MongoDB中(2.2)的下一個穩定版本,他們將發佈一個新aggregation framework,這將使得該操作更容易。