mongodb版本:4.4.20
参考数据:MongoDB Map Reduce | 菜鸟教程 (runoob.com)
通过这个教程做了一些测试,发现总是通过不了。记录一下成功的方法过程。
//选取已发布的文章(status:"active"),并通过user_name分组,计算每个用户的文章数
var mp=db.posts.mapReduce(
function() { emit(this.user_name,1); },
function(key, values) {return Array.sum(values)},
{
query:{status:"active"},
out:"post_total"
}
)
//生成结果集:
var res = db.runCommand(mp)
//查询显示结果
db.post_total.find()
在集合posts中插入数据,最后会附上此次测试的数据,使用上述命令可以查询出结果如:
// 1
{
"_id": "mark",
"value": 5
}
// 2
{
"_id": "runoob",
"value": 2
}
在任意数据库中创建集合posts,数据如下:
// 1
{
"_id": ObjectId("62610f586d6a0000fd37f0d3"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "mark",
"status": "active"
}
// 2
{
"_id": ObjectId("62610f666d6a0000fd38f024"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "mark",
"status": "active"
}
// 3
{
"_id": ObjectId("62610f746d6a0000fd39e0b9"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "mark",
"status": "active"
}
// 4
{
"_id": ObjectId("62610f746d6a0000fd39e55d"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "mark",
"status": "active"
}
// 5
{
"_id": ObjectId("62610f746d6a0000fd39e8b1"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "mark",
"status": "active"
}
// 6
{
"_id": ObjectId("62610f816d6a0000fd3ad3df"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "mark",
"status": "disabled"
}
// 7
{
"_id": ObjectId("62610f896d6a0000fd3b5290"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "runoob",
"status": "disabled"
}
// 8
{
"_id": ObjectId("62610f8e6d6a0000fd3bb46c"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "runoob",
"status": "disabled"
}
// 9
{
"_id": ObjectId("62610f8f6d6a0000fd3bbdaa"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "runoob",
"status": "disabled"
}
// 10
{
"_id": ObjectId("62610f946d6a0000fd3c1d0b"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "runoob",
"status": "active"
}
// 11
{
"_id": ObjectId("62610f946d6a0000fd3c20d5"),
"post_text": "菜鸟教程,最全的技术文档。",
"user_name": "runoob",
"status": "active"
}
运行截图: