2013-04-18 89 views
0

我只是想這個簡單的事情,但日食不會讓我使用find()方法,我不明白爲什麼cuz這是它在mongodb.org解釋的方式..有人可以看到我做錯了什麼?其folk.find()方法,只要我不把任何條件,以有工作(NAMN:「羅伯特」)在MongoDB中的SQL查詢

Mongo mongo= new Mongo(); 
DB db = mongo.getDB("Helly"); 
long startTime= System.currentTimeMillis(); 
DBCollection folk = db.getCollection("folk"); 
BasicDBObject document = new BasicDBObject(); 
document.put("namn", "Robert"); 
document.put("efternamn", "Brismo"); 
document.put("ålder", 34); 

BasicDBObject documentDetail = new BasicDBObject(); 
documentDetail.put("ålder", 47); 
documentDetail.put("hårfärg", "brun"); 
documentDetail.put("skostorlek", "44"); 

document.put("Utseende", documentDetail); 
folk.insert(document); 
DBCursor cursor= folk.find({namn:"Robert"}); 
while(cursor.hasNext()){ 
DBObject obj=cursor.next(); 
System.out.println(obj);} 
+0

mongodb.org上的哪些Java文檔以您展示的方式顯示「find」? JavaScript會以這種方式工作。 – WiredPrairie

+0

哦好吧,所以這是爲JavaScript ..?你知道在Java中是否有這樣做的方法?我有一堆針對SQL數據庫的SQL查詢,並且希望在mongoDB中使用相同的問題,因爲我將數據從SQL服務器移動到Mongo。你有什麼建議嗎?即時在Eclipse中使用Java現在。 – glaring

+0

我添加了一個如何在Java中查找的答案。 – WiredPrairie

回答

0

要做到與namn一個查詢發現,你需要使用的BasicDBObject實例,並使用它作爲查詢:

BasicDBObject query = new BasicDBObject("namn", "Robert"); 
DBCursor cursor= folk.find(query); 
try { 
    while(cursor.hasNext()) { 
     // .. do something 
     System.out.println(cursor.next()); 
    } 
} 
finally { 
    cursor.close(); 
} 

Getting Started Documentation

+0

謝謝這麼多,它的作品! – glaring

0

另一種選擇是使用的QueryBuilder類,如下所示。

// Connect to the Mongo database 
Mongo mongoConn = new Mongo("localhost", 27017); 
DB mongoDb = mongoConn.getDB("TESTDB"); 
DBCollection collection = mongoDb.getCollection("folk"); 

// Building the query parameters 
QueryBuilder qFinder= new QueryBuilder(); 
qFinder.put("name").is("Robert"); 

// Fetching the records for the query. get() method will convert QueryBuilder -> DBObject class of query parameters 
DBCursor dbCursor = collection.find(qFinder.get()); 

while(dbCursor.hasNext()) { 
// Do something with the code 
System.out.println(dbCursor.next()); 
} 

Querybuilder的優勢在於您可以輕鬆鏈接查詢。qFinder.put( 「名稱」)爲( 「羅伯特」)和( 「時代」)GT(25)。等等。 請參考:My Blog Post