我得到了这样的东西
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/