2015-04-06 134 views
-1

我是mongoDB的新手,並且已經設置了一個java應用程序來與我的db進行通信。我的數據庫中只有一個包含多個文檔的集合。有沒有辦法讓我可以讓一個查詢來抓取我的集合,然後以某種方式訪問​​每個文檔中的所有字段?我如何查詢mongodb中的文檔

我試圖創建一個查詢,然後將我所有的DBObjects添加到一個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

由於您列表中的每個對象是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鏈接,如果您還沒有已經看過了。

0

是的,你可以從文檔訪問所有的值。 遍歷文檔像下面

for(DBObject obj: docs){ 
    obj.get("_id"); 
}