如何在 spring mongodb 聚合中写入单个子 ID 字段
How to write single sub id field in spring mongodb aggregation
我正在尝试从 Spring 数据 Mongo 聚合中获取以下查询:
{
"_id": {
"year": "$_id.year"
},
"result": {
"$push": {
"rs": "$_id.rs",
"vl": "$vl"
}
}
}
我试过以下方法:
GroupAggregation as = group( "_id.year" ).push( new BasicDBObject( "rs", "$_id.rs" ).append( "vl", "$vl" ) ).as( "result" );
但是它在“_id”字段下没有子字段"year"的地方生成这个表达式:
{ "$group" : { "_id" : "$_id.year" , "result" : { "$push" : { "rs" : "$_id.rs" , "vl" : "$vl"}}}}
关于如何使用 spring 数据 mongodb 聚合获得该查询的任何想法?
我在 api 中没有看到任何挂钩来访问以前的 _id
值。
您可以使用 AggregationOperation
使用 mongodb 类型创建 $group
阶段。
类似于
AggregationOperation group = new AggregationOperation() {
@Override
public DBObject toDBObject(AggregationOperationContext aggregationOperationContext) {
return new BasicDBObject("$group", new BasicDBObject("_id", new BasicDBObject("year", "$_id.year" )).append("result", new BasicDBObject("$push", new BasicDBObject( "rs", "$_id.rs" ).append( "vl", "$vl" ))));
}
};
我正在尝试从 Spring 数据 Mongo 聚合中获取以下查询:
{
"_id": {
"year": "$_id.year"
},
"result": {
"$push": {
"rs": "$_id.rs",
"vl": "$vl"
}
}
}
我试过以下方法:
GroupAggregation as = group( "_id.year" ).push( new BasicDBObject( "rs", "$_id.rs" ).append( "vl", "$vl" ) ).as( "result" );
但是它在“_id”字段下没有子字段"year"的地方生成这个表达式:
{ "$group" : { "_id" : "$_id.year" , "result" : { "$push" : { "rs" : "$_id.rs" , "vl" : "$vl"}}}}
关于如何使用 spring 数据 mongodb 聚合获得该查询的任何想法?
我在 api 中没有看到任何挂钩来访问以前的 _id
值。
您可以使用 AggregationOperation
使用 mongodb 类型创建 $group
阶段。
类似于
AggregationOperation group = new AggregationOperation() {
@Override
public DBObject toDBObject(AggregationOperationContext aggregationOperationContext) {
return new BasicDBObject("$group", new BasicDBObject("_id", new BasicDBObject("year", "$_id.year" )).append("result", new BasicDBObject("$push", new BasicDBObject( "rs", "$_id.rs" ).append( "vl", "$vl" ))));
}
};