MongoDB 对所有文档进行计数和分组

标签 mongodb

我需要在 mongodb 数据库中进行查询:

我需要获取所有文档中重复次数最多的作者字段,但该字段位于数组文档中..

{ _id:'1234567', 
date:'9/27/08 3:21', 
a_name:'name', 
a_nick:'nick', 
comments: [
{
body:"aa",
email:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4b2a0b2a65282426" rel="noreferrer noopener nofollow">[email protected]</a>,
author: "Author a"
},
{
body:"bb",
email:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f496b496da979b99" rel="noreferrer noopener nofollow">[email protected]</a>,
author: "Author b"
},{
body:"cc",
email:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ed8ead8ec38e8280" rel="noreferrer noopener nofollow">[email protected]</a>,
author: "Author c"
}
]} 

我认为我需要使用聚合框架,但我不知道我可以使用女巫条款...... 有谁可以帮助我吗?

最佳答案

您可以使用 aggregation framework$unwind$group 运算符

db.<collection>.aggregate( 
   { $project: { 'comments.author':1 } }, 
   { $unwind: '$comments' }, 
   { $group: {_id: '$comments.author', cnt: { $sum:1 } } }, 
   { $sort: { cnt:-1 } }, 
   { $limit:1 } 
);

$project 运算符是可选的。

关于MongoDB 对所有文档进行计数和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228419/

相关文章:

node.js - 使用 $lookup 比较两个字段的查询

使用 C# 驱动程序的 MongoDB 架构设计?

node.js - findOneAndUpdate,回调必须是一个函数,得到 [object Object] ,NodeJs,mongoose 错误

node.js - 如何使用 mongoose 获取 MongoDb 中创建的集合的 id?

java spring MappingJacksonJsonView 没有在 mongodb ObjectId 上执行 toString

java - Mongo 3.2 驱动程序的新聚合功能,使用 Java

spring - 在 Amazon EC2 上部署 Spring 项目

node.js - Meteor MongoDB 订阅以 10 秒的间隔而不是实时传递数据

javascript - 自动从 Node.js API 导出到 TSV 或其他 Excel 兼容格式

node.js - 我是否使用 mongoose 正确执行此 API Put 请求?