如何在Spring Mongo中调用MongoDB addFields



我的MongoDB 中有以下类型的对象

{
...,
"name": {
"en": "...",
"am": "...",
"ru": "..."
},
...
}

现在我想使用SpringDataMongo运行以下查询

db.categories.aggregate({$addFields: {'name': '$name.am'}})

其中$name.am中的am部分是名称的区域设置,因此它必须是动态的。我查看了MongoTemplate API,发现它不支持addFields操作。有什么办法做到这一点吗?

您需要实现聚合操作

一次性使用

AggregationOperation addFields = new AggregationOperation() {
@Override
public Document toDocument(AggregationOperationContext context) {
return new Document("$addFields", new Document("name", "$name.am"));
}
};

Generic

public AggregationOperation aggregateAddFields(final String field, final String valueExpresion) {
AggregationOperation addFields = new AggregationOperation() {
@Override
public Document toDocument(AggregationOperationContext context) {
return new Document("$addFields", new Document(field, valueExpresion));
}
};
return addFields;
}
...
AggregationOperation addFields = aggregateAddFields("name", "$name.am");

最新更新