具有冲突路径的 MongoTemplate 无效投影

MongoTemplate invalid projection with conflict path

我正在使用 Spring Data MongoTemplate 来查询文档。 集合中存储的文档结构为

{
  id: "string", 
  metadata: { -- embeded structure},
  version:  {
              metadata: {
                version: 1,
                --  other fields
              },
              versionContent: { -- embeded structure --}
            }
}

在我的查询中,我只需要一个字段的子集,所以我使用的ProjectionOperation是

Aggregation.project("id", "metadata", "version.metadata");

得到异常:

specification contains two conflicting paths. Cannot specify both 'metadata.version' and 'metadata'

我该怎么办?

最终,我必须指定排除的字段,而不是指定要包含在投影中的字段,如下所示,

Aggregation.project().andExclude("not-needed-field1", "not-needed-field2")

避免“路径冲突”异常。不知道是不是MongoTemplate的bug,还是有一定的原因不允许用户在投影中包含这些路径。