我是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);
}
});
有人可以解释什么是Block
和apply
?
我只想读取mongodb中的数据。我不想改变其中的数据。
答案 0 :(得分:0)
代码只是阅读Restaurant集合中的所有文档,并在控制台上打印出每个文档。
答案 1 :(得分:0)
这是在迭代过程中操纵Documents
的可选方法。
Block
是Functional Interface
(Java界面),允许您将Document
修改为自定义对象(添加/编辑/删除数据,初始化自定义对象等等)
因此,Block
只有一个名为apply
的方法,您需要实现Document
操作。在迭代期间,forEach
会自动调用apply
方法。
您可以阅读有关功能界面的更多信息:https://dzone.com/articles/introduction-functional-1
修改强>
要使用更优雅,您可以这样做:
创建实现Block<Document>
的新类。因此,对于forEach方法,您可以传递类实例(iterable.forEach(new DocumentImpl())
)。
public class DocumentImpl implements Block<Document> {
public void apply(Document arg0) {
//Do stuff here
}
}
不推荐!已过时。不要使用MongoDatabase db
,而是使用DB db
与DBObject
接口一起使用的地方。因此,一旦您使用find
进行查询,您将获得DBCursor
。您可以按.next()
迭代DBCursor并获取DBObject
个文档。
使用更易读的Spring-Data,在MongoDB和POJO之间自动映射对象。 http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/repository/MongoRepository.html