java - Java解析MongoDB文件的最佳方法
问题描述
所以,我是这样读的MongoDB
:
mongo = new MongoClient("localhost", 27017);
// Accessing the database
MongoDatabase database = mongo.getDatabase("myDb");
MongoCollection<Document> collection = database.getCollection("searchresults");
// Getting the iterable object
FindIterable<Document> iterDoc = collection.find();
int i = 1;
// Getting the iterator
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
i++;
}
}
正如你所看到的,每一行都有几列:Title
等等。所以,当我迭代时myDB
,我想通过它的值来解析每一行,而不是全部放在一行中。
有什么建议么?
解决方案
您可以尝试读取 Document 结构,然后在每个条目上运行另一个循环。这将在自己的行上给出每个值。
FindIterable<Document> iterDoc = database.getCollection("").find();
for(Document doc : iterDoc) {
for(Map.Entry<String, Object> entry : doc.entrySet()) {
System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue());
}
}
如果您只需要某些键,请在查找查询中使用投影
推荐阅读
- pandas - 添加百分比列
- angular - Angular:在 HTTP 获取请求中发送两个以上的参数
- powerbi - 从 Azure Synapse 导入数据时,Microsoft PowerBI 中出现 OLE DB 或 ODBC 错误
- mirth - Mirth Database Reader 无法处理从通道中的数据库检索到的行(索引超出范围)?
- airflow - 气流调试:在 vscode 中运行 DAG 时如何跳过回填作业执行
- sql - 使用 SQL 执行日期拆分并获取给定时间段(2 个日期列)的记录数
- html - 没有文字的内嵌阴影
- javascript - 如何为同一个功能点击事件设置不同的延迟
- apache-spark - 使用 pyspark 过滤数组值
- mongodb - 如何停止对 MongoDB 的写入但允许读取