0

我是 MongoDB 的新手。我正在通过这个链接:

https://docs.mongodb.org/getting-started/java/query/

我的问题是:

目的是什么

iterable.forEach(new Block<Document>() {

    @Override
    public void apply(final Document document) {
        System.out.println(document);
    }

});

有人可以解释什么是Blockandapply吗?

我只想读取 mongodb 中存在的数据。我不想更改其中存在的数据。

4

2 回答 2

0

Documents这是在迭代期间进行操作的可选方式。

Block是一个Functional Interface(Java 接口),允许您修改Document自定义对象(添加/编辑/删除数据,初始化您的自定义对象等...)

因此,在您需要实现操作的地方Block只调用了 1 个方法。在迭代过程中,自动调用方法。applyDocumentforEachapply

您可以阅读有关功能接口的更多信息:https ://dzone.com/articles/introduction-functional-1

编辑:

要更优雅地使用 forEach,您可以执行以下操作:

  1. 创建实现的新类Block<Document>。因此,对于 forEach 方法,您可以传递您的类实例 ( iterable.forEach(new DocumentImpl()))。

    public class DocumentImpl implements Block<Document> {
    
        public void apply(Document arg0) {
            //Do stuff here
        }
    
    }
    
  2. 不建议!已弃用。而不是 using MongoDatabase db,而是DB db在它与DBObject接口一起使用的地方使用。所以,一旦你用 查询find,你会得到DBCursor。您可以迭代 DBCursor.next()并获取DBObject文档。

  3. 使用更具可读性的 Spring-Data 并在 MongoDB 和 POJO 之间自动映射您的对象。http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/repository/MongoRepository.html

于 2016-01-02T00:11:38.583 回答
0

该代码只是从 Restaurant 集合中读取所有文档并在控制台上打印出每个文档。

于 2015-12-17T05:54:57.260 回答