作为聚合操作的一部分,我需要展开一个数组。我想知道如何将对象作为项目的一部分放回数组中。这是有效的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);
};
我想知道是否还有更好的方法。 非常感谢您的帮助/建议。谢谢。
答案 0 :(得分:0)
不幸的是,没有。
您可以将$project
的{{1}}替换为project()
,以将其缩短一点。
AggregationExpression
我创建了DATAMONGO-2312,以在下一版本中为新的数组字段投影提供支持。