我希望获得整个集合df <- tribble(~X1, ~X2, ~X3,
1, 1, 8,
2, 4, 8,
3, 4, 8,
4, 90, 199,
5, 3, 9,
6, 3, 9)
df2 <- df %>%
group_by(X2, X3) %>%
count() %>%
ungroup()
df2
# A tibble: 4 x 3
# X2 X3 n
# <dbl> <dbl> <int>
#1 1 8 1
#2 3 9 2
#3 4 8 2
#4 90 199 1
df2 %>%
filter(n>1) %>%
select(-n) %>%
left_join(df, by = c("X2","X3"))
# A tibble: 4 x 3
# X2 X3 X1
# <dbl> <dbl> <dbl>
#1 3 9 5
#2 3 9 6
#3 4 8 2
#4 4 8 3
的{{1}}字段的最大值。
在mongo shell中我可以写:
date
并返回一个日期为4programmers
的文档,但是当我用java编写时:
db.getCollection("4programmers").aggregate([
{
$group:
{
_id: null,
max : {$max: "$date"}
}
}
])
因此我得到:ISODate("2017-10-20T17:12:37.000+02:00")
Date d = collection.aggregate(
Arrays.asList(
Aggregates.group("$date", Accumulators.max("maxx", "$date"))
)
).first().getDate("maxx");
System.out.println(d);
可能出现问题?
答案 0 :(得分:1)
Aggregates.group
的第一个参数应为null而不是“$ date”(实际上是_id: null
)。
因此代码应如下所示:
Date d = collection.aggregate(
Arrays.asList(
Aggregates.group(null, Accumulators.max("maxx", "$date"))
)
).first().getDate("maxx");
或者你可以在没有Aggregates类的情况下做同样的事情:
collection.aggregate(asList(new Document("$group", new Document("_id", null)
.append("max", new Document("$max", "$date")))))
.first().getDate("max");