我得到了这样的东西

MongoClient mongoClient = new MongoClient();
MongoDatabase database = mongoClient.getDatabase(db);
MongoCollection<Document> collection = database.getCollection(col);

FindIterable<Document> results = collection.find();

我可以使用以下方法获取 JSONArray 字符串:
JSON.serialize(results)

但它在最新版本的 mongodb 驱动程序中已被弃用。

在 MongoDB shell 中,我可以使用:
db.$.find().toArray();

但是我在 Java 驱动程序中没有找到类似的东西。

我解决了使用 List 并遍历光标的问题。
MongoCursor<Document> cursor = results.iterator();
List<String> list = new ArrayList<String>();

while(cursor.hasNext())
    list.add(cursor.next().toJson());

return list.toString();

无论如何,请随时提出更好的解决方案。

最佳答案

在 find iterable 上使用 spliterator(),然后流,映射到 String 并收集:

StreamSupport.stream(collection.find().spliterator(), false)
        .map(Document::toJson)
        .collect(Collectors.joining(", ", "[", "]"))

请注意,并行流不会对 mongo 结果起作用,因此将 parallel 标志保留为 false

关于java - 有没有办法将 FindIterable<Document> 转换为 JSONArray 字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52169070/

10-12 06:17