java mongodb API中的查询

时间:2014-04-25 12:07:26

标签: java api mongodb

我是mongodb java 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());
    }

但是,它不会返回任何内容。

2 个答案:

答案 0 :(得分:1)

DBCollections对象具有方法find,它主要采用DBObject参数。例如,如果您想查找年龄> gt的用户50这可以帮到你。

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

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

BasicDBObject接受第一个参数,即一个字段,第二个参数是另一个BasicDBObject或值。通过这些对象的组合,您可以构建任何查询。

我建议你看看MongoDB文档,它非常好。

Mongo Java Driver http://docs.mongodb.org/ecosystem/drivers/java/

见Javadoc。 http://api.mongodb.org/java/current/

答案 1 :(得分: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"));
}