使用Spring数据投影新数组字段

时间:2019-06-26 20:30:30

标签: spring mongodb spring-data-mongodb

作为聚合操作的一部分,我需要展开一个数组。我想知道如何将对象作为项目的一部分放回数组中。这是有效的MongoDB聚合操作:

db.users.aggregate([ { "$match" : {...} , { "$unwind" : "$profiles"} ,{$project: {'profiles': ['$profiles']}}...}

更具体地说,如何使用Spring Data mongoDB ProjectionOperation来实现此目标:

{$project: {'profiles': ['$profiles']}}

此功能自3.2起已添加。

编辑1:

我浏览了一些帖子和一个答案 Christoph Strobl

根据答案,我提出了一些可行的方法,如下所示:

  AggregationOperation project = aggregationOperationContext -> {
    Document projection = new Document();
    projection.put("profiles", Arrays.<Object> asList("$profiles"));
    projection.put("_id","$id");
    return new Document("$project", projection);
  };

我想知道是否还有更好的方法。 非常感谢您的帮助/建议。谢谢。

1 个答案:

答案 0 :(得分:0)

不幸的是,没有。

您可以将$project的{​​{1}}替换为project(),以将其缩短一点。

AggregationExpression

我创建了DATAMONGO-2312,以在下一版本中为新的数组字段投影提供支持。