我收集了有关应用程序的信息。每个文档都有字段 ver ,其中包含应用程序的版本。例子:
"1.0.0.2" (they are strings)
"2.0.3.10"
"3.1.5.111"
前3个digints是主要版本,最后一个数字是 build 版本。我徘徊,有什么方法可以通过主要版本的应用程序获得分组吗?
示例
输入集合:
{_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。我更喜欢使用Aggregation Framework的解决方案:)
答案 0 :(得分:3)
您可以使用$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}
]