{
_id: 1,
item: "abc",
stock: [
{ size: "S", color: "red", quantity: 25 },
{ size: "S", color: "blue", quantity: 10 },
{ size: "M", color: "blue", quantity: 50 }
]
}
"stats" : {
"n" : 1730969,
"nscanned" : 0,
"nscannedObjects" : 1730969,
"timems" : 3178,
"planSummary" : "COLLSCAN"
}
db.items.getIndexes();
db.items.distinct("stock.size");
db.items.distinct("stock.size").explain();
db.items.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "local.items"
},
{
"v" : 1,
"key" : {
"stock.size" : 1
},
"name" : "stock.size_1",
"ns" : "local.items"
}
]
db.items.distinct("stock.size")
[ "M", "S" ]
db.items.distinct("stock.size").explain();
2016-04-25T10:19:42.731+0200 E QUERY TypeError: Object M,S has no method 'explain'
at (shell):1:33
db.items.aggregate([{$unwind: "$stock"}, {$group: {_id: "$stock.size"}}], {explain: true})
{
"stages" : [
{
"$cursor" : {
"query" : {
},
"fields" : {
"stock" : 1,
"_id" : 0
},
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "local.items",
"indexFilterSet" : false,
"parsedQuery" : {
"$and" : [ ]
},
"winningPlan" : {
"stage" : "COLLSCAN",
"filter" : {
"$and" : [ ]
},
"direction" : "forward"
},
"rejectedPlans" : [ ]
}
}
},
{
"$unwind" : "$stock"
},
{
"$group" : {
"_id" : "$stock.size"
}
}
],
"ok" : 1
}