2017-10-11 55 views
0

我有一个看起来是这样的文件:蒙戈 - 鲜明的匹配整个阵列

{"arr":["a","b","c"]}, 
{"arr":["a","b","x"]}, 
{"arr":["c","b","a"]}, 
{"arr":["a","b","c"]} 

我想不过来调用不同的让所有的独特阵列,查询数组默认匹配的元素,这意味着这样的:

db.getCollection("mycoll").distinct("arr",{}); 

回报:

["a","b","c","x"] 

代替

[["a","b","c"], 
["a","b","x"], 
["c","b","a"]] 

如何查询不同的数组?或者,我很想得到每个结果的出现次数过多:

{["a","b","c"] : 2, 
["a","b","x"] : 1, 
["c","b","a"] : 1} 
+0

在聚合管道中使用'$ sum'在数组上使用'$ group'。就像'db.collectionname.aggregate({$ group:{_ id:“$ arr”,count:{$ sum:1}}})' – Veeram

+0

这对我有效:'db.mycoll.aggregate({$ group: {_id: “$ ARR”,计数:{$总和:1}}})'。谢谢!如果你做出回答,我会接受它。 – Porthos3

+0

[Group by sum mongodb]可能重复(https://stackoverflow.com/questions/17909694/group-by-sum-mongodb) – Veeram

回答

1

您可以通过arr$sum聚集管道使用$group

db.mycoll.aggregate({$group:{_id:"$arr", count:{$sum:1}}})