CodeNewbie Community

Donald Feury
Donald Feury

Posted on • Originally published at donaldfeury.xyz on

How to find all the distinct values of a field across your documents in MongoDB using the distinct aggregation method

For a full overview of MongoDB and all my posts on it, check out my overview.

If you want to find out all the different values for a field across all the documents in a collection, you can use the ready-made distinct aggregation method to find that out.

With the given data in a collection called 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
    }
}

Enter fullscreen mode Exit fullscreen mode

If you run the following command:

db.podcasts.distinct("episodeName")

Enter fullscreen mode Exit fullscreen mode

The result will be:

[
    "#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"
]

Enter fullscreen mode Exit fullscreen mode

Notice that the result is all the different values for the field episodeName.

You can also do the same on a query result:

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

Enter fullscreen mode Exit fullscreen mode

Will return:

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

Enter fullscreen mode Exit fullscreen mode

Discussion (0)