获得以下收藏:
db.test.insert({ "DateID" : 2084, "DBFileID" : 105657, "Size_MB" : 1427 });
db.test.insert({ "DateID" : 2085, "DBFileID" : 105657, "Size_MB" : 1427 });
db.test.insert({ "DateID" : 2086, "DBFileID" : 105657, "Size_MB" : 1427 });
db.test.insert({ "DateID" : 2087, "DBFileID" : 105657, "Size_MB" : 1427 });
db.test.insert({ "DateID" : 2088, "DBFileID" : 105657, "Size_MB" : 1427 } );
db.test.insert({ "DateID" : 2084, "DBFileID" : 105658, "Size_MB" : 3873 });
db.test.insert({ "DateID" : 2085, "DBFileID" : 105658, "Size_MB" : 3878 });
db.test.insert({ "DateID" : 2086, "DBFileID" : 105658, "Size_MB" : 3881 });
db.test.insert({ "DateID" : 2087, "DBFileID" : 105658, "Size_MB" : 3882 });
db.test.insert({ "DateID" : 2088, "DBFileID" : 105658, "Size_MB" : 3883 } );
db.test.insert({ "DateID" : 2084, "DBFileID" : 105659, "Size_MB" : 3134 });
db.test.insert({ "DateID" : 2085, "DBFileID" : 105659, "Size_MB" : 3134 });
db.test.insert({ "DateID" : 2086, "DBFileID" : 105659, "Size_MB" : 3134 });
db.test.insert({ "DateID" : 2087, "DBFileID" : 105659, "Size_MB" : 3134 });
db.test.insert({ "DateID" : 2088, "DBFileID" : 105659, "Size_MB" : 3134 } );
db.test.insert({ "DateID" : 2084, "DBFileID" : 105660, "Size_MB" : 1149 });
db.test.insert({ "DateID" : 2085, "DBFileID" : 105660, "Size_MB" : 1149 });
db.test.insert({ "DateID" : 2086, "DBFileID" : 105660, "Size_MB" : 1149 });
db.test.insert({ "DateID" : 2087, "DBFileID" : 105660, "Size_MB" : 1149 });
db.test.insert({ "DateID" : 2088, "DBFileID" : 105660, "Size_MB" : 1049 } );
db.test.insert({ "DateID" : 2084, "DBFileID" : 105661, "Size_MB" : 107159 });
db.test.insert({ "DateID" : 2085, "DBFileID" : 105661, "Size_MB" : 107159 });
db.test.insert({ "DateID" : 2086, "DBFileID" : 105661, "Size_MB" : 107159 });
db.test.insert({ "DateID" : 2087, "DBFileID" : 105661, "Size_MB" : 107159 });
db.test.insert({ "DateID" : 2088, "DBFileID" : 105661, "Size_MB" : 107159 });
然后检索每个DBFileID的最高DateID:
MongoDB Enterprise > db.test.aggregate([ { $group: {_id: "$DBFileID",lastDate: { $last: "$DateID" }}}])
{ "_id" : 105661, "lastDate" : 2088 }
{ "_id" : 105657, "lastDate" : 2088 }
{ "_id" : 105660, "lastDate" : 2088 }
{ "_id" : 105658, "lastDate" : 2088 }
{ "_id" : 105659, "lastDate" : 2088 }
这里是我想要的结果集:
{ "DateID" : 2088, "DBFileID" : 105657, "Size_MB" : 1427 }
{ "DateID" : 2088, "DBFileID" : 105658, "Size_MB" : 3883 }
{ "DateID" : 2088, "DBFileID" : 105659, "Size_MB" : 3134 }
{ "DateID" : 2088, "DBFileID" : 105660, "Size_MB" : 1049 }
{ "DateID" : 2088, "DBFileID" : 105661, "Size_MB" : 107159 }
即。检索每个DBFileID,其Size_MB为最高DateID ...
我试图在单个聚合+查询查询中得到这个,但无济于事......
有人可以帮助我吗?
事先,谢谢! 问候, SEB
答案 0 :(得分:0)
DateID
降序排列文档DBFieldID
对文档进行分组,并从每个组中选择第一个文档(这将是一个最大DateID
值的文档查询:
db.test.aggregate([
{ $sort: { DateID: -1 }},
{ $group: {_id: "$DBFileID", doc: { $first: "$$ROOT" }}},
{ $project: { _id:0, DBFieldID: "$_id", DateID: "$doc.DateID", Size_MB: "$doc.Size_MB" }}
]);
输出:
{ "DBFieldID" : 105661, "DateID" : 2088, "Size_MB" : 107159 }
{ "DBFieldID" : 105660, "DateID" : 2088, "Size_MB" : 1049 }
{ "DBFieldID" : 105659, "DateID" : 2088, "Size_MB" : 3134 }
{ "DBFieldID" : 105658, "DateID" : 2088, "Size_MB" : 3883 }
{ "DBFieldID" : 105657, "DateID" : 2088, "Size_MB" : 1427 }