sql >> Database >  >> NoSQL >> MongoDB

MongoDB Java:het vinden van objecten in Mongo met behulp van de QueryBuilder $in-operator levert niets op

Je doet nu het equivalent van:

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

Wat geen geldige zoekopdracht is, omdat je niet opgeeft op welk veld je $in moet zetten. Ik neem aan dat je wilt:

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

Wijzig uw queryconstructiecode dienovereenkomstig en het zou in orde moeten zijn.

EDIT:Correcte code toevoegen:

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

Houd er rekening mee dat dit ervan uitgaat dat "Id" iets anders is dan "_id"




  1. Redis is leeg na het opstarten, hoewel er een .rdb-bestand is

  2. MongoDB assymetrische retour van gegevens, eerste item in array volledig geretourneerd, de rest met weggelaten bepaalde eigenschappen?

  3. Een specifiek genest object uit een array van objecten verwijderen

  4. Hoe MongoDB-query optimaliseren met zowel $gt als $lte?