请教一个查询统计的语句

2022-01-05 20:08:36 +08:00
 aqtata

大概有这样的数据

[{
	"date": "20220101",
	"id": "aaa",
	"name": "jack"
}, {
	"date": "20220101",
	"id": "aaa",
	"name": "tony"
}, {
	"date": "20220102",
	"id": "aaa",
	"name": "jack1"
}, {
	"date": "20220102",
	"id": "aaa",
	"name": "jack2"
}, {
	"date": "20220102",
	"id": "bbb",
	"name": "jack3"
}, {
	"date": "20220103",
	"id": "aaa",
	"name": "jack"
}]

需要按日期分组,再统计出每天的数据总数,各字段分组后的数量,期望得到这样的结果

date		count	id_count	name_count
20220103	1		1           1
20220102	3		2           3
20220101	2		1           2

研究了下聚合查询,$group按照date分组后就没法统计其他字段的分组数量了。 还有个$push可以在分组时将其他字段压入到新数组,但是其中数据是重复的,而我只是想得到分组后的数量而已。

目前是傻乎乎的查多次。可以一次查出来我期望的结果吗?

1682 次点击
所在节点    MongoDB
1 条回复
mayunyi
2023-05-23 11:43:43 +08:00
db.collection.aggregate([
{
$group: {
_id: { date: "$date" },
count: { $sum: 1 },
id_count: { $addToSet: "$id" },
name_count: { $addToSet: "$name" }
}
},
{
$project: {
_id: 0,
date: "$_id.date",
count: 1,
id_count: { $size: "$id_count" },
name_count: { $size: "$name_count" }
}
},
{
$sort: { date: 1 }
}
])

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826436

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX