2015-04-06 3 views
-1

Я новичок в mongoDB и создал приложение java для связи с моим db. У меня есть только одна коллекция в моем 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"); 
} 
Смежные вопросы