小编sub*_*123的帖子

MongoDB 聚合 - 查询以获取组中的最新项目

鉴于此源数据:

{ "_id" : ObjectId("1"), "productID" : 1, "amount" : 1, "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("2"), "productID" : 2, "amount" : 2, "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("3"), "productID" : 3, "amount" : 3, "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("4"), "productID" : 4, "amount" : 4, "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("5"), "productID" : 1, "amount" : 11, "date" : ISODate("2017-02-02T00:00:00Z") }
{ "_id" : ObjectId("6"), "productID" : 2, "amount" : …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

4
推荐指数
1
解决办法
2416
查看次数

Java 8流 - 收集和流式传输列表

我有一个列表地图,并希望收集所有的值,然后在收集的列表上流,所以给出: -

Map<LocalDateTime, List<PublicationSession>> effectiveDatePublicationMap;
Run Code Online (Sandbox Code Playgroud)

下面的工作/显示我想用迭代做什么,但我想在流中完成所有操作,而不是使用迭代创建一个中间列表: -

List< PublicationSession> publicationsToFilter = new ArrayList<>();
for (List< PublicationSession> sessions : effectiveDatePublicationMap.values()) {
    publicationsToFilter.addAll(sessions);
}

Collection< PublicationSession > wantedPublications = publicationsToFilter.stream()
            .filter(pub -> PublicationStatus.valueOf(pub.getPublishStatus()) == PublicationStatus.COMPLETE)
            .sorted(Comparator.comparing(PublicationSession::getCreateTime))
            .collect(toMap(p -> p.getPublicationSession().getEffDateTime(), UnaryOperator.identity(), PICK_LATEST))
            .values();
Run Code Online (Sandbox Code Playgroud)

因此,我想将列表的映射全部流式传输到一个列表中,然后在一个流中处理该子列表,而不是必须在两个语句中执行上述操作(即通过迭代构建列表,然后执行流式处理以过滤/排序和搜集.

到目前为止我没有这样做,当我尝试流式/收集地图时,我得到编译问题.任何人都可以一步显示如何执行上述操作,而无需进行迭代然后流式传输?

java collections java-stream

2
推荐指数
1
解决办法
3516
查看次数