使用Java MongoDB 4.0.4驱动程序使用Block打印集合时发生编译错误

使用Java MongoDB 4.0.4驱动程序使用Block打印集合时发生编译错误,java,mongodb,mongodb-java,Java,Mongodb,Mongodb Java,在使用OpenJDK 11时,并遵循上的示例,在使用FindTable.forEachprintBlock时看到编译错误 看起来com.mongodb.Block也没有被弃用 public String testLocal() { MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getData

在使用OpenJDK 11时,并遵循上的示例,在使用FindTable.forEachprintBlock时看到编译错误

看起来com.mongodb.Block也没有被弃用

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>


文件显然已经过时了。如果您查看javadocs中的FindItemerable 您将看到forEach继承自java.lang.Iterable,它将使用者作为参数,而不是块

因此,将您的打印块声明替换为:

public Consumer<Document> printBlock = document -> System.out.println(document.toJson());
。。。一切都会好起来。

在和Mongodb支持的帮助下,添加工作代码块

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((Consumer<Document>)  d -> System.out.println( d.toJson())); 
}

或参照


也许您需要编写findItemerable.forEachprintBlock行;要查找可编辑的.forEachdoc->printBlock.applydoc;相反
public Consumer<Document> printBlock = document -> System.out.println(document.toJson());

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 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);
}

Consumer<Document> printBlock = new Consumer<Document>() {
  public void accept(final Document doc) {
    System.out.println(doc.toJson());
  };
};