2014-04-25 51 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