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

时间:2018-06-15 12:37:08

标签: mongodb spring-data-mongodb mongodb-java mongodb-java-3.3.0

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

MongoCursor:

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

2 个答案:

答案 0 :(得分:2)

如果你看一下这两个课程中的方法,你就会明白。

FindIterable 包含filterlimitskip等方法,可帮助您过滤结果。
它还有maxAwaitTime(适用于tailable游标)和maxTime等方法。

MongoCursor 并不具备所有这些功能。但使用MongoCursor有一个优势。 MongoCursor接口扩展了 Closeable ,后者又扩展了AutoCloseable。

AutoCloseable(在Java 7中引入)使得可以使用try-with-resources习惯用法。像这样的东西

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

答案 1 :(得分:1)

findIterablemongodbIterable

的文档

<强> FindIterable

可以查找。

<强> MongoIterable

MongoIterable是一个操作的结果,例如查询。

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

FindIterable会为您提供更有针对性的方法。