我是mongoDB的新手,并且已经设置了一个java应用程序来与我的数据库进行通信。我的数据库中只有一个包含多个文档的集合。有没有办法让我可以通过单个查询来获取我的集合,然后以某种方式访问每个文档中的所有字段?
我尝试创建一个查询,然后将所有DBObject添加到ArrayList。但是,一旦我完成了这项工作,我就无法弄清楚如何访问每个文档中的数据。
这是我到目前为止所拥有的:
ArrayList<DBObject> docs = new ArrayList<DBObject>();
DBCollection coll = db.getCollection("testCollection");
DBCursor cursor = coll.find();
try {
while(cursor.hasNext()) {
docs.add(cursor.next());
}
} finally {
cursor.close();
}
//how do I access everything in my docs???
docs.get(0).find("id", 1);
答案 0 :(得分:0)
是的,您可以访问文档中的所有值。 迭代下面的文档
for(DBObject obj: docs){
obj.get("_id");
}
答案 1 :(得分:0)
由于列表中的每个对象都是DBObject,因此您应该可以使用以下内容访问字段值:
BasicDBObject doc = docs.get(0);
String fieldValue = doc.getString("nameOfField");
你不能像在数组列表上那样进行查找(“id”,1)但是你可以在你的DBCollection“coll”上进行。格式会有点不同,比如coll.find({id:1})。然后,您将获得结果的集合。如果您只查找单个记录,请使用coll.findOne() like this
您必须以另一种方式遍历数组列表以进行自己的搜索。我建议创建一个包含属性的类,以匹配每个文档的字段。这是另一种可能有用的资源:
converting-dbobject-to-java-object-while-retrieve-values-from-mongodb
如果您还没有看过,我还建议this tutorial链接。