相关疑难解决方法(0)

使用spring-data-mongodb传输聚合操作的结果

我正在使用spring-data-mongodb,并且想使用游标进行聚合操作。

MongoTemplate.stream()得到一个查询,所以我试图创建聚合实例,将其转换为DBOBJECT使用Aggregation.toDbObject() ,创建了一个BasicQuery使用DBOBJECT,然后调用流()方法。
这将返回一个空游标。

调试spring-data-mongodb代码显示MongoTemplate.stream()使用FindOperation,这使我认为thinkspring-data-mongodb不支持流式聚合操作。
有谁能够使用spring-data-mongodb来流式传输聚合查询的结果?

作为记录,我可以使用Java mongodb驱动程序来实现,但是我更喜欢使用spring-data。

编辑 11月10日-添加示例代码:

    MatchOperation match = Aggregation.match(Criteria.where("type").ne("AType"));
    GroupOperation group = Aggregation.group("name", "type");
    group = group.push("color").as("colors");
    group = group.push("size").as("sizes");
    TypedAggregation<MyClass> agg = Aggregation.newAggregation(MyClass.class, Arrays.asList(match, group));

    MongoConverter converter = mongoTemplate.getConverter();
    MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext = converter.getMappingContext();
    QueryMapper queryMapper = new QueryMapper(converter);
    AggregationOperationContext context = new TypeBasedAggregationOperationContext(MyClass.class, mappingContext, queryMapper);
    // create a BasicQuery to be used in the stream() method by …
Run Code Online (Sandbox Code Playgroud)

java mongodb spring-data-mongodb

3
推荐指数
1
解决办法
2809
查看次数

标签 统计

java ×1

mongodb ×1

spring-data-mongodb ×1