我的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");