2013-09-23 22 views
2

我有收集有關應用程序的信息。每個文檔都有保存應用程序版本的字段版本。例子:獲得從外地子MongoDB中

"1.0.0.2" (they are strings) 
"2.0.3.10" 
"3.1.5.111" 

首先3個digints是主要版本,最後的數字是構建版本。我徘徊,有什麼辦法,我可以通過主要版本的應用程序的獲取組?

輸入集合:

{_id: ..., ver: "1.0.0.1"}, 
{_id: ..., ver: "1.0.0.2"}, 
{_id: ..., ver: "2.2.3.0"} 

聚合結果:

[ 
{ver:"1.0.0", count:2}, 
{ver:"2.2.3", count:1} 
] 

P.S.我想用$substr運營商更喜歡用解聚合框架:)

回答

1

你可以做到這一點。以下代碼將做你想做的。

db.myCollection.aggregate({$group: {_id : {$substr : ["$ver", 0,5]}, count:{"$sum" : 1}}}); 

響應將是如下:

[ 
    {"_id" : "1.0.0", "count" : 2}, 
    {"_id" : "2.2.3", "count" : 1} 
] 
+1

好主意,它比正則表達式更快。 – ixe013