java - 使用 Block 时编译错误使用 Java MongoDB 4.0.4 驱动程序打印集合
问题描述
使用Java MongoDB Driver 4.0.4、 OpenJDK 11 并遵循MongoDB 文档上的示例时,使用时看到编译错误findIterable.forEach(printBlock);
看起来com.mongodb.Block
http://mongodb.github.io/mongo-java-driver/4.0/driver/tutorials/aggregation/也没有被弃用。
public String testLocal() {
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("cord");
MongoCollection<Document> collection1 = database.getCollection("papers");
FindIterable<Document> findIterable = collection1.find(new Document());
findIterable.forEach(printBlock);
}
public Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
};
错误:
[ERROR] /Projects/cord/src/main/java/com/engg/java/cord/services/PrimaryService_Local.java:
[24,30] incompatible types: com.mongodb.Block<org.bson.Document> cannot be converted
to java.util.function.Consumer<? super org.bson.Document>
解决方案
文档显然已经过时了。如果您查看 FindIterable 的 javadocs(http://mongodb.github.io/mongo-java-driver/4.0/apidocs/mongodb-driver-sync/com/mongodb/client/FindIterable.html),您会看到forEach
继承自java.lang.Iterable
它以 aConsumer
作为参数,而不是 a Block
。
因此,将您的 printBlock 声明替换为:
public Consumer<Document> printBlock = document -> System.out.println(document.toJson());
……一切都会好起来的。
推荐阅读
- java - 将扩展 jhipster 用户的 UserExtra 设置为与另一个实体的关系
- python - Numpy - 轴中的数组范围索引
- sql - Boms 中项目的库存余额
- python - DRF 使用带有动态主键的序列化程序
- javascript - 如何在 javascript 中检查 websocket 状态
- javascript - 在javascript中返回数据属性
- sql - 有没有办法将 SQL 中的表“展开”为多个规范化表?(SQL 服务器)
- java - 从多个 xpath 中提取文本并断言文本 - Selenium/Java
- javascript - Div 没有被隐藏
- xml - 仅在带有 xslt 的 xsd:schema 中添加前缀命名空间