- 組按年份
- 計數根據模型的總和
- 限制查詢在該年度製成
- 排序爲1
模型的總數
現在您將獲得最大型號的製造年份。
所以,你的查詢(Java實現),看起來象下面這樣:
// Group by Year
DBObject groupFields = new BasicDBObject("_id", "$_id.year");
//Count total no of models made in that year
groupFields.put("sum", new BasicDBObject("$sum", "$manufacturers.data.modelName"));
//Group the fields
DBObject group = new BasicDBObject("$group", groupFields);
//Sort in descending order inorder to get maximum models
DBObject sortFields = new BasicDBObject("sum", -1);
DBObject sort = new BasicDBObject("$sort", sortFields);
//Limit to one since you need the year when maximum models were made
DBObject limit = new BasicDBObject("$limit", 1);
AggregationOutput output = myColl.aggregate(group,sort,limit);
希望這有助於。
編輯您的輸入:
db.structure.aggregate([
{$unwind : "$manufacturers"},
{$group: {
_id: {
day:"$_id.year"
},
count: { $sum: "$manufacturers.data.modelName" }
}},
{$sort: {count : -1}},
//Limit by 1 to get year when maximum models where made
{$limit : 1},
{$out : "out"}
]);
能否請您告訴我們從'structure'收集和樣本的預期輸出一些樣本文檔? – chridam