如何在MongoDB中使用不同的聚合方法找到一个字段的所有不同值

156 阅读1分钟

关于MongoDB的全面概述以及我关于它的所有帖子,请查看我的概述

如果你想在一个集合中的所有文档中找出一个字段的所有不同值,你可以使用现成的distinct 聚合方法来找出。

在一个名为podcasts 的集合中给定数据:

{
	{
		"name": "Tech Over Tea",
		"episodeName": "#75 Welcome Our Hacker Neko Waifu | Cyan Nyan",
		"dateAired": ISODate("2021-08-02"),
		"listenedTo": true,
	},
	{
		"name": "Tech Over Tea",
		"episodeName": "Neckbeards Anonymous - Tech Over Tea #20 - feat Donald Feury",
		"dateAired": ISODate("2020-07-13"),
		"listenedTo": true
	},
	{
		"name": "Tech Over Tea",
		"episodeName": "#34 The Return Of The Clones - feat Bryan Jenks",
		"dateAired": ISODate("2020-10-19"),
		"listenedTo": false
	}
}

如果你运行下面的命令:

db.podcasts.distinct("episodeName")

结果将是:

[
	"#75 Welcome Our Hacker Neko Waifu | Cyan Nyan",
	"Neckbeards Anonymous - Tech Over Tea #20 - feat Donald Feury",
	"#34 The Return Of The Clones - feat Bryan Jenks"
]

注意,结果是字段episodeName 的所有不同值。

你也可以对一个查询结果做同样的操作:

db.podcasts.distinct("dateAired", {listenedTo: true})

将会返回:

[ISODate("2021-08-02"),ISODate("2020-07-13")]