首页 > 解决方案 > MongoCursor 之间的区别vs FindIterable

问题描述

我想知道 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");
    }

标签: mongodbspring-data-mongodbmongodb-javamongodb-java-3.3.0

解决方案


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

FindIterable具有类似 filter,的方法limitskip可以帮助您过滤掉结果。
它还具有maxAwaitTime(用于可尾游标)和maxTime.

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

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

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

推荐阅读