当前位置: 首页 > 知识库问答 >
问题:

Spring Data MongoDB outputType用于聚合不映射/不日志记录

史默
2023-03-14

我试图将聚合操作的结果映射到DTO。它没有正确地映射,并且没有错误或日志消息来指示什么/哪里出错。

db.barProperty.aggregate([
{
$match: { domainObjectId : "044f4c4c-d481-4461-ae2f-301c78ff5c91"}
},
{
$sort: {
priority: 1,
issuedAt: -1
}
},
{
$group: {
"_id": "$field",
"value": {"$last": "$value"},
"issuedAt": {"$last": "$issuedAt"}
}
}
], { allowDiskUse: true });
/* 1 */
{
    "_id" : "field1",
    "value" : "2021-04-05T12:15:00Z",
    "issuedAt" : ISODate("2021-06-14T00:10:00.000Z")
}

/* 2 */
{
    "_id" : "field2",
    "value" : "value2",
    "issuedAt" : ISODate("2021-06-14T00:10:00.000Z")
}
    return reactiveMongoTemplate.aggregate(Aggregation.newAggregation(BarProperty.class,
                    Aggregation.match(Criteria.where("domainObjectId").is(domainObjectId)),
                    Aggregation.sort(Direction.DESC, PRIORITY)
                            .and(Direction.ASC, ISSUED_AT),
                    Aggregation.group("field")
                            .last(VALUE).as(VALUE)
                            .last(ISSUED_AT).as(ISSUED_AT)
            ).withOptions(AggregationOptions.builder().allowDiskUse(true).build()), ProjectionProperty.class)
            // TODO why is no ProjectionProperty being returned
            .doOnNext(c -> {
                System.out.println("found projection property");
            })
            .collectList();


@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProjectionProperty {

    private String id;

    private String value;

    private OffsetDateTime issuedAt;
}

我已经试过_ID了;和字段作为id字段的替代品。

共有1个答案

尉迟雅昶
2023-03-14

请您首先确定您的聚合是否有效,并返回一个文档,而不是试图映射到DTO。

现在不要使用doNext()。一步一步地接近它,找出它到底失败在哪里

Flux<Document> result = reactiveMongoTemplate.aggregate(agg, BarProperty.class, Document.class);
 类似资料:
  • 现在,问题是,当我以以下方式进行日志记录时: 尽管根记录器级别被设置为“错误”,但日志条目仍然存在于两个日志文件中。然而,当我去掉“it.pkg.testpkg.service”记录器(通过注释或删除它)时,条目停止进入根记录器。我不太清楚这是怎么回事。 目前,我已经找到了一个临时解决方案,方法是在“root_file_appender”中添加以下条目: 谢了。

  • 我怀疑这可能是我包含的一个库,它正在扰乱我的日志。这有可能吗?librray可以改变我的日志显示方式吗?既然我有点迷路了,我该怎么调查呢?

  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https:

  • 我试图在一个基于spring的项目中创建记录器策略。 我面临的问题与滚动政策有关。已创建logfile.log并且工作正常,但未创建滚动文件rollingfile.log.%d{yyyy-MM-dd}.log。

  • 我试图使用“使用父母处理程序”来防止日志(由类/类别定义)在多个文件中传播。也就是说,在几个不同的文件中显示相同的消息。例: 但是,有些消息会同时出现在这两者中。“a.b.c.d”消息出现在“a.b”中

  • mySampleApplicaton.gwt.xml mySampleApplication.java(入口点)