3 回答
TA贡献1818条经验 获得超3个赞
问题:您正在分组并试图找到组中的_id最大值,这显然是每个组一个。_id相反,您需要从所有过滤的文档中找到最大值。
下面的代码可以得到我们预期的输出:
MongoCollection coll = db.getCollection(collection);
AggregateIterable docs = coll.aggregate(Arrays.asList(Aggregates.match(Filters.eq("Dept", "IT")),
Aggregates.group(null, Accumulators.max("_id", "$_id"))));
for (Document doc : docs) {
System.out.println(doc.toJson());
}
TA贡献1854条经验 获得超8个赞
解决方案:我们需要对非聚合字段进行分组。
代码:
MongoCollection<Document> coll = db.getCollection(collection);
AggregateIterable<Document> docs = coll.aggregate(
Arrays.asList(
Aggregates.match(Filters.eq("Dept", "IT")),
Aggregates.group("EmpId", Accumulators.max("id", "$_id"))
)
);
for(Document doc : docs) {
System.out.println(doc.toJson());
}
TA贡献1828条经验 获得超6个赞
例如:您可以试试这个通过使用这个我从列中获取最大日期logDate
并将其分组为 MachineNames(根据我的要求)
MongoCollection<Document> collection = databases.getCollection("Smx_22234_ShiftOEEDaily"); AggregateIterable<Document> maxLogDate = collection.aggregate(Arrays.asList(Aggregates.group("$machineName", Accumulators.max("maxlogdate", "$logDate"))));
添加回答
举报