2014-04-25 69 views
0

我是mongodb java api的新手。我正在嘗試對我的數據庫執行查詢。我讀過數據庫找到它的集合,我想檢索用戶的特徵。我的代碼:Java中的查詢mongodb API

ServerAddress serverAdr; 
    serverAdr = new ServerAddress(".. .. .., ...); 

    Twitter twitter = null; 
    MongoOptions options = new MongoOptions(); 
    options.connectionsPerHost = 10; 
    MongoClient mongoClient = new MongoClient(.. ... ...", ...); 
    DB db = mongoClient.getDB("trendSetters"); 
    System.out.println("Connect to database successfully"); 

    //JSONObject content = getJSONFromFile("user.json"); 
    Mongo mongo = null; 

    Set<String> colls = db.getCollectionNames(); 
    mongo = new Mongo(serverAdr, options); 
    mongo.setWriteConcern(WriteConcern.SAFE); 
    DB db_se = mongo.getDB("iti_se"); 
    DBCollection incollection = db_se.getCollection("cms_users_unique"); 
    DBCollection outcollection = db_se.getCollection("cms_users_features"); 

    for (String s : colls) { 
     System.out.println(s); 
    } 

現在我想要執行查詢來從所有ID檢索用戶名例如。在java mongodb API中如何做到這一點?

編輯:我已經嘗試過什麼

BasicDBObject query = new BasicDBObject(); 
    DBCursor cursor; 
    query = new BasicDBObject("followers", new BasicDBObject("$gt", 1)); 
    cursor = incollection.find(query); 

    while(cursor.hasNext()){ 
     System.out.println(cursor.next()); 
    } 

然而,亙古不返回任何結果。

回答

1

你問:「我想執行的查詢檢索所有的ID,例如用戶名。」

爲了取回收集您可以使用DBCollection的find()方法的所有文件。

DBCursor cursor; 
cursor = incollection.find(); 

之後,你可以爲每個文件獲得通過它的名稱字段值,如下

while(cursor.hasNext()){ 
    System.out.println(cursor.next().get("username")); 
} 

如果您需要添加更多指標分析查詢文件:

BasicDBObject query1; 
DBCursor cursor; 
query1 = new BasicDBObject("age", new BasicDBObject("$gt", 25)); 
cursor = incollection.find(query1); 
while(cursor.hasNext()){ 
    System.out.println(cursor.next().get("username")); 
} 
1

DBCollections對象有方法找到它主要採取DBOBJECT說法。例如,如果您想查找年齡> 50歲的用戶,這可以幫助您。

query = new BasicDBObject("age", new BasicDBObject("$gt", 50)); 
cursor = incollection.find(query); 

while(cursor.hasNext()){ 
    System.out.println(cursor.next()); 
} 

BasicDBObject取第一個參數,即一個字段,第二個參數是另一個BasicDBObject或一個值。通過組合這些對象,您可以構建任何查詢。

我建議你看看MongoDB的文檔,這是相當不錯。

蒙戈Java驅動程序http://docs.mongodb.org/ecosystem/drivers/java/

見的Javadoc。 http://api.mongodb.org/java/current/

+0

Basivally時我試圖cursor.hasNext()它試圖改變主機端口警告:異常執行isMaster命令上/ ........:... java.io.IOException:無法連接.... .......:... –

+0

Mongo類很快將被棄用。您應該只使用MongoClient,並使用getDB,getCollection並使用您的集合。你在混合Mongo和MongoClient。 – gasparms