我正在使用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)