Mongodb 如何聚合不同值的出现次数(计数)?
Mongodb how to aggregate the number of occurencies(count) of distinct values?
我有一套 200 万个主题标签。然而,只有大约 200k 是不同的值。我想知道我的数据中哪些主题标签重复得更多。
我用它来查找每个主题标签在我的数据集上重复了多少次:
db.hashtags.aggregate([{ "$group": {"_id": "$hashtag","count": { "$sum": 1 }}}]);
但是,我想将值保存在一个不同的集合中,只包含唯一值及其对应的出现次数。
我应该怎么做?
如果可能的话,请提供一些信息,以便我不仅可以理解代码,还可以理解如何去做。
谢谢。
您可以使用 $out
管道运算符将聚合的输出写入另一个集合。
db.hashtags.aggregate([
{ "$group": {"_id": "$hashtag", "count": { "$sum": 1 }}},
{ "$out": "newcoll" }
]);
请注意,此功能是在 MongoDB 2.6
中添加的
使用以下 aggregation framework,对于具有多个记录的 hashtag
,return 重复 hashtag
和相应的记录计数:
db.hashtags.aggregate([
{
$group: {
_id: "$hashtag",
count: { $sum: 1 }
}
},
{ $match: { count: { $gt: 1 } } },
{ $sort : { count : -1} },
{ $limit : 200 },
{ $out: "duphashtags" }
])
$sum
运算符将传递给它的字段的值相加,在本例中为常量 1 - 从而将分组记录的数量计入计数字段。 $match
过滤计数大于 1 的文档,即重复项。 $sort
首先对最频繁的重复项进行排序,并将结果限制在前 200 个。 $out
运算符将聚合管道 returned 的文档写入指定的集合,比如 "duphashtags"
.
我有一套 200 万个主题标签。然而,只有大约 200k 是不同的值。我想知道我的数据中哪些主题标签重复得更多。
我用它来查找每个主题标签在我的数据集上重复了多少次:
db.hashtags.aggregate([{ "$group": {"_id": "$hashtag","count": { "$sum": 1 }}}]);
但是,我想将值保存在一个不同的集合中,只包含唯一值及其对应的出现次数。
我应该怎么做?
如果可能的话,请提供一些信息,以便我不仅可以理解代码,还可以理解如何去做。 谢谢。
您可以使用 $out
管道运算符将聚合的输出写入另一个集合。
db.hashtags.aggregate([
{ "$group": {"_id": "$hashtag", "count": { "$sum": 1 }}},
{ "$out": "newcoll" }
]);
请注意,此功能是在 MongoDB 2.6
中添加的使用以下 aggregation framework,对于具有多个记录的 hashtag
,return 重复 hashtag
和相应的记录计数:
db.hashtags.aggregate([
{
$group: {
_id: "$hashtag",
count: { $sum: 1 }
}
},
{ $match: { count: { $gt: 1 } } },
{ $sort : { count : -1} },
{ $limit : 200 },
{ $out: "duphashtags" }
])
$sum
运算符将传递给它的字段的值相加,在本例中为常量 1 - 从而将分组记录的数量计入计数字段。 $match
过滤计数大于 1 的文档,即重复项。 $sort
首先对最频繁的重复项进行排序,并将结果限制在前 200 个。 $out
运算符将聚合管道 returned 的文档写入指定的集合,比如 "duphashtags"
.