【问题标题】:Express nested field in Spring Data MongoDB aggregation $project在 Spring Data MongoDB 聚合 $project 中表达嵌套字段
【发布时间】:2020-04-20 10:00:58
【问题描述】:

这个查询生成一个对象,里面的键/值按我的预期工作

db.empdetails.aggregate( [ { $project: { reportInformationMap: { valu1: 1 } } } ] );

所以在春季数据中我会这样做:

Aggregation.project("reportInformationMap.valu1")

Spring 数据生成如下内容:

{ "aggregate" : "__collection__" , "pipeline" : [ { "$project" : {  "valu1" : "$reportInformationMap.valu1"}}

它可以工作,但给我valu1 作为根值。我需要它作为reportInformationMap 的嵌套值。

【问题讨论】:

    标签: mongodb spring-data spring-data-mongodb


    【解决方案1】:

    您必须为此使用ProjectionOperation.ProjectionOperationBuilder.nested 方法(nested 定义了该字段的嵌套字段绑定):

    以下是输入文档的示例:

    { "name" : { "first" : "John", "last" : "Doe" } }
    

    代码:

    ProjectionOperation projection = Aggregation.project().and("name").nested(Fields.fields("name.first"))
    
    Aggregation agg = newAggregation(projection);
    AggregationResults<Document> results = mongoTemplate.aggregate(agg, "test", Document.class);
    results.forEach(doc -> System.out.println(doc.toJson()));
    

    输出(预计):

    { "name": {"first": "John"} }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多