Spring Data - mongodb unwind函数没有给我正确的结果

时间:2017-10-23 09:13:03

标签: spring mongodb spring-mongodb

我有2个收藏品(文章和标签)。文章有'标签'这是objectIds的数组。我正在尝试加入文章和标签,以便从标签中获取tagName。以下是我的mongodb查询:

db.articles.aggregate([
  {"$unwind": "$tags"},
  {"$lookup": {
   "localField": "tags",
   "from": "tags",
   "foreignField": "_id",
   "as": "materialTags"
    }
  }
])

我将其转换为弹簧数据,如下所示

UnwindOperation unwindOperation = Aggregation.unwind("tags");
LookupOperation lookupOperation1 = LookupOperation.newLookup()
        .from("tags")
        .localField("tags")
        .foreignField("_id")
        .as("materialTags");

Aggregation aggregation = Aggregation.newAggregation(unwindOperation, lookupOperation1 );
}
AggregationResults<Article> resultList
        = mongoTemplate.aggregate(aggregation, "articles", Article.class);

我的实体Article.class

....
private List<ObjectId> tags = new ArrayList<>(); //array of tag ids

@Transient
private List<Tag> materialTags = new ArrayList<>(); // array of all tag details  

//getters and setters
...

Tag.class

@Id private ObjectId id;

private String tagName;

...

如果我使用mongodb查询,我会收到&#39; materialTags&#39;填充了标记对象的数组列表。通过Spring Data,我得到了完全相同的结果。展开后,我得到多行(每个标签数组条目1行),这是正确的。通过调试点我可以看到resultList - &gt; rawResult包含&#39; materialTags&#39;。但是resultList - &gt; mappedResults - &gt; &#39; materialTags&#39;是空的。

为什么Spring Data在Mapped Result中没有给出正确的结果?我究竟做错了什么 ?请帮忙。

提前致谢。

0 个答案:

没有答案