是否需要锁定mongodb中的每个文件?

时间:2015-12-16 10:33:48

标签: java mongodb interface mongo-java-driver

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

});

有人可以解释什么是Blockapply

我只想读取mongodb中的数据。我不想改变其中的数据。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是在迭代过程中操纵Documents的可选方法。

BlockFunctional Interface(Java界面),允许您将Document修改为自定义对象(添加/编辑/删除数据,初始化自定义对象等等)

因此,Block只有一个名为apply的方法,您需要实现Document操作。在迭代期间,forEach会自动调用apply方法。

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

修改

要使用更优雅,您可以这样做:

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

    public class DocumentImpl implements Block<Document> {
    
        public void apply(Document arg0) {
            //Do stuff here
        }
    
    }
    
  2. 不推荐!已过时。不要使用MongoDatabase db,而是使用DB dbDBObject接口一起使用的地方。因此,一旦您使用find进行查询,您将获得DBCursor。您可以按.next()迭代DBCursor并获取DBObject个文档。

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