我 在 StackOverFlow 找到 了 几 个 与 聚合 中 addFields 相关 的 例子 , 但是 没有 一 个 是 用 Java 实现 的 。
db.getCollection('myDocument').aggregate([
{$match : {"metaId.ref.uuid" : "d6112808-1ce1-4545-bd52-cf55bc4ed25e"}},
{$lookup: {
from: "simple",
localField: "someId.ref.uuid",
foreignField: "uuid",
as: "simple"}},
{"$unwind": "$simple"},
{"$addFields": { "metaId.ref.name" : "$simple.name" }}
])
中 的 每 一 个
我 不能 正确 地 在 Java 中 实现 : - - 没有 得到 正确 的 过程
LookupOperation lookupOperation = LookupOperation.newLookup()
.from("simple")
.localField("execId.ref.uuid")
.foreignField("uuid")
.as("simple");
Aggregation myDocAggr = new Aggregation(
match(Criteria.where("metaId.ref.uuid").is(someUUID)),
group("uuid").max("version").as("version"),
lookupOperation,
Aggregates.unwind(""),
Aggregates.addFields(fields));
Document document = new Document();
AggregationResults<String> myDocAggrResults =
mongoTemplate.aggregate(myDocAggr, myDocument, myDocument.class);
List<String> mydocumentList = myDocAggrResults .getMappedResults();
格式
无法 使用 unwind 和 addFields , 这 是 示例 java 代码 , 但 不 太 好 。 请 帮助 我 。 提前 感谢
3条答案
按热度按时间4smxwvx51#
您正在混合Java驱动程序
Aggregates
方法与SpringAggregation
方法.此外,
$addFields
仍然是not supported
在 Spring 蒙戈。您必须使用以下聚合。
iyfamqjs2#
尽管$addFields不被spring mongo支持,你可以自己实现它:
并像这样使用它:
希望它能帮助到一些人。
f0brbegy3#
从'spring-data-mongodb'的3.0版本开始,创建AddField聚合实际上是非常容易的。您可以使用AddFieldsOperationBuilder。
在下面的示例中,我为objectId字段添加了一个名为
_id
的字符串ID字段。字符串字段idString
可以在查找聚合中使用。示例: