2014-04-25 4 views
0

Je suis nouveau à mongodb java api. J'essaie d'effectuer des requêtes sur ma base de données. J'ai lu la base de données trouvé les collections et je veux récupérer les caractéristiques des utilisateurs. Mon code:Requêtes dans 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); 
    } 

Maintenant, je veux effectuer des requêtes pour récupérer de tous les identifiants les noms d'utilisateurs par exemple. Comment est-il possible de le faire dans java mongodb API?

EDIT: Ce que j'ai essayé

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

Cependant, il doesnot rien renvoyer.

Répondre

1

Vous avez demandé: "Je veux effectuer des requêtes pour récupérer de tous les identifiants les noms d'utilisateurs par exemple."

Pour récupérer tous les documents de la collection, vous pouvez utiliser la méthode find() de DBCollection.

DBCursor cursor; 
cursor = incollection.find(); 

Après cela, vous pouvez obtenir la valeur du champ par son nom pour chaque document ci-dessous

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

Si vous avez besoin d'ajouter d'autres critères pour interroger les documents:

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

Les objets DBCollections ont une méthode find qui prend principalement un argument DBObject. Par exemple, si vous voulez trouver des utilisateurs avec l'âge> 50 cela peut vous aider.

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

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

BasicDBObject prennent premier argument, qui est un champ, et un second argument qui est un autre BasicDBObject ou une valeur. Avec la composition de ces objets, vous pouvez créer n'importe quelle requête.

Je vous recommande de consulter MongoDB Documentation, c'est plutôt bien.

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

Voir Javadoc. http://api.mongodb.org/java/current/

+0

Basivally quand J'ai essayé cursor.hasNext() il a essayé de changer le port dans l'hôte AVERTISSEMENT: Exception exécutant la commande isMaster sur/........: ... java.io.IOException: n'a pas pu se connecter à .... .......: ... –

+0

La classe Mongo sera bientôt obsolète. Vous devriez utiliser seulement MongoClient et à partir de cela, getDB, getCollection et travailler avec votre collection. Vous mélangez Mongo et MongoClient. – gasparms