spring - 向 mongo 聚合的结果添加新字段
问题描述
当我尝试添加具有特定值的新字段时,它在 mongo shell 上运行良好:
db.getCollection('collName').aggregate([
{ "$group" : { "_id" : "$idcpt" , "sum" : { "$sum" : "$val"}}},
{$addFields : {idcpt : 1092}}
])
但是当我尝试在春天使用 org.springframework.data.mongodb.core.aggregation.Aggregation 实现这个聚合时
我对“addFields”有困难,我找不到正确的组合:
Aggregation.match(criteria),
Aggregation.group("idcpt").sum("val").as("sum"),
Aggregation.fields(....)
请问有什么帮助吗?
解决方案
$addFields
还不是 spring 数据支持库的一部分,https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation.supported-aggregation-operations。
我之前遇到过同样的问题,最后我只是将它作为原始查询运行。
BasicDBList doc = (BasicDBList) JSON.parse(aggregateQuery.toString()); //where aggregateQuery is a StringBuilder that prepares the query string.
List<DBObject> pipeline = new ArrayList<>();
for (Object aDoc : doc) {
DBObject stage = (DBObject) aDoc;
pipeline.add(stage);
}
AggregationOutput output = mongoTemplate.getDb().getCollection("collName").aggregate(pipeline);
推荐阅读
- java - 是否可以为同一个 http 状态代码定义多个消息?
- python - 如何将 SymLogNorm 与 pyplot.imsave() 一起使用?
- excel - ThisWorkBook.Names().Comment 将引用从 A1 转换为 F1C1
- javascript - 在承诺中失去“这个”的价值
- javascript - 滚动时是否可以动态选择元素 id 并使用 JQuery 更改其颜色?
- python - Power BI 活动日志 REST API 获取访问令牌
- javascript - 意外的 Firestore 集合快照 docChanges() 行为
- python - discord.py 中的多字命令(命令扩展)
- swift - 带有 WKWebView 的模态关闭文本字段焦点
- javascript - 如何阻止或选择不使用 Yarn 安装依赖项?