如何使用Spring Boot串流mongo db数据?

时间:2019-07-18 07:27:46

标签: java mongodb spring-boot

我正在寻找一种在春季启动中流式传输Mongo DB响应的方法。

不幸的是,我得到了与Node.js相关的所有参考。

Spring Boot无法使用Java吗?

有没有建议流式mongo数据库查询结果?

1 个答案:

答案 0 :(得分:0)

使用 Java 8 (当前使用最多)不能将mongodb流直接映射到Spring Boot输出流,必须使用StreamSupport.stream

Stream<YourData> readData(...) {
    final MongoIterable<YourData> rs = myCollection.find(...)
            .projection(fields(...))
            .map(x -> new YourData(x));
    return StreamSupport.stream(rs.spliterator(), false);
}

现在,只需将流连接到控制器:

@RequestMapping("/mydata")
public Stream<YourData> mydata(...) {
    return backend.readData(...);
}

当然,您可以执行任何streaming流程以streaming的方式来处理数据。

@RequestMapping("/mydata")
public Stream<OutputData> mydata(...) {
    return backend.readData(...).map(this::convertMyToOutput);
}