4

アプリケーションに関する情報のコレクションがあります。各ドキュメントには、アプリケーションのバージョンを保持するフィールドverがあります。例:

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

最初の 3 桁がメジャーバージョン、最後の数字がビルドバージョンです。アプリケーションのメジャーバージョンごとにグループを取得する方法はありますか?

入力コレクション:

{_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}
]

PS私はAggregation Frameworkを使ったソリューションを好むでしょう:)

4

1 に答える 1

4

$substr演算子を使用してそれを行うことができます。次のコードは、あなたが望むことを行います。

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

応答は次のようになります。

[
  {"_id" : "1.0.0", "count" : 2},
  {"_id" : "2.2.3", "count" : 1}
]
于 2013-09-23T14:11:35.670 に答える