MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB Java :la recherche d'objets dans Mongo à l'aide de l'opérateur QueryBuilder $in ne renvoie rien

Vous faites maintenant l'équivalent de :

db.col.find({$in:[{Id:id1}, {Id:id2}, ..., {Id:idN}]})

Ce qui n'est pas une requête valide puisque vous ne spécifiez pas sur quel champ $in. Je suppose que vous voulez :

db.col.find({Id:{$in:[id1, id2, ..., idN]}})

Modifiez le code de construction de votre requête en conséquence et tout devrait bien se passer.

EDIT :Ajout du code correct :

public static void getDocuments(List<Integer> documentIds) {

            BasicDBList docIds = new BasicDBList();
            docIds.addAll(documentIds)
            DBObject inClause = new BasicDBObject("$in", docIds);
            DBObject query = new BasicDBObject("Id", inClause);
            DBCursor dbCursor = mongoRule.getDatabase().getCollection("mycollection").find(query);
            System.out.println(dbCursor == null);
            if (dbCursor != null) {
                while (dbCursor.hasNext()) {
                    System.out.println("object -  " + dbCursor.next());
                }
            }
        } 

Veuillez noter que cela suppose que "Id" est autre chose que "_id"