我有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中没有给出正确的结果?我究竟做错了什么 ?请帮忙。
提前致谢。