sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Java:At finde objekter i Mongo ved hjælp af QueryBuilder $in-operatoren returnerer intet

Du gør nu hvad der svarer til :

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

Hvilket ikke er en gyldig forespørgsel, da du ikke angiver, hvilket felt du skal $ind på. Jeg går ud fra, at du vil have:

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

Skift din forespørgsels konstruktionskode i overensstemmelse hermed, og du burde være i orden.

EDIT:Tilføjer korrekt kode :

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

Bemærk venligst, at dette forudsætter, at "Id" er noget andet end "_id"




  1. Serialisering af uforanderlige værdityper med Mongo C#-driver

  2. Hvordan kan jeg angive den naturlige rækkefølge i MongoDB?

  3. MongoDB sortering

  4. Slap af og derefter gruppesammenlægning i MongoDB C#