We have various ways to achieve the result. However, we will discuss here two methods.
Table of Contents
1. Distinct
db.collection.distinct(field, query, options)Finds the distinct values for a specified field across a single collection or view and returns the results in an array.
This method takes the following parameters:
| Parameter | Type | Description |
|---|---|---|
field | string | The field for which to return distinct values. |
query | document | A query that specifies the documents from which to retrieve the distinct values. |
options | document | Optional. A document that specifies the options. See Options. |

Examples
The examples use the inventory collection that contains the following documents:
{
"_id": 1,
"dept": "A",
"item": {
"sku": "111",
"color": "red"
},
"sizes": ["S", "M"]
}{
"_id": 2,
"dept": "A",
"item": {"sku": "111","color": "blue" },
"sizes": [ "M", "L"]
}{
"_id": 3,
"dept": "B",
"item": {"sku": "222", "color": "blue"},
"sizes": "S"
}{
"_id": 4,
"dept": "A",
"item": {"sku": "333", "color": "black"},
"sizes": [ "S"]
}Return Distinct Values for a Field
The following example returns the distinct values for the field dept from all documents in the inventory collection:
db.inventory.distinct( "dept")
The method returns the following array of distinct dept values:
[ "A", "B" ]
Return Distinct Values for an Embedded Field
The following example returns the distinct values for the field sku, embedded in the item field, from all documents in the inventory collection:
db.inventory.distinct("item.sku")The method returns the following array of distinct sku values:
[ "111", "222", "333" ]
2. Aggregation Pipeline:
The following aggregation operation uses the $group stage to retrieve the distinct item values from the sales collection:
db.inventory .aggregate( [ { $group : { _id : "$dept" } } ] )The operation returns the following result:
{ "_id" : "A" }{ "_id" : "B" }
