0

我只想做这个简单的事情,但 Eclipse 不会让我使用 find() 方法,我不明白为什么这是它在 mongodb.org 上解释的方式。有人能看到我做错了什么吗?它是folk.find() 方法,只要我不在那里设置任何条件它就可以工作(namn:“Robert”)

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);}
4

2 回答 2

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();
}

入门文档

于 2013-04-18T17:41:21.837 回答
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("name").is("Robert").and("age").gt(25); 等等。参考:我的博文

于 2015-02-04T00:30:58.493 回答