MongoCursor<Document> 与 FindIterable<Document> 之间的区别

Difference between MongoCursor<Document> vs FindIterable<Document>

我想知道 MongoCursor 和 FindIterable 有什么区别。

Mongo游标:

MongoCursor<Document> cursorPersonDoc = personDocCollection.find(whereClauseCondition).iterator();
        while (cursorPersonDoc.hasNext()) {
           Document doc = cursorPersonDoc.next();
           String s1 = doc.getString("s1");
         }

FindIterable:

FindIterable<Document> cursorPersonDoc = personDocCollection.find(whereClauseCondition);
    for (doc: cursorPersonDoc){
      String s1 = doc.getString("s1");
    }

findIterable and mongodbIterable

的文档

FindIterable

可迭代查找。


MongoIterable

MongoIterable 是查询等操作的结果。


MongoCursor 允许遍历任何类型的数据,因为 FindIterable 将仅遍历 Find 结果。

FindIterable会给你更有针对性的方法

如果您查看 类 中的方法,您就会有所了解。

FindIterable 具有 filterlimitskip 等方法,可帮助您筛选出结果。
而且它还有像 maxAwaitTime(对于可尾游标)和 maxTime 这样的方法。

MongoCursor 没有这些。但是使用 MongoCursor 有一个优势。 MongoCursor 接口扩展了 Closeable,后者又扩展了 AutoCloseable。

AutoCloseable(在 Java 7 中引入)使得使用 try-with-resources 习语成为可能。像这样

try (final MongoCursor cursor = personDocCollection.find(whereClauseCondition).iterator()) {
   ........
 }