sql >> Database >  >> NoSQL >> MongoDB

Hoe een verzameling te coderen met regex en complexe criteria met behulp van het Java MongoDB-stuurprogramma?

Het maken van query's is eigenlijk gewoon het creëren van BSON-documentrepresentatie, wat in feite dezelfde interface is als standaard HashMap- of List-interfaces, al naar gelang:

    Document query = new Document("objectKey",new Document( "$regex","Bos"))
        .append("cacheVersionString","08/03/15_11:05:09");

    Document projection = new Document("_id",0)
        .append("objectData",0)
        .append("lastModified",0)
        .append("productCode",0);

    MongoCursor<Document> cursor = collection.find(query).projection(projection).iterator();

Waar dat in principe identiek is aan hoe u query's structureert in de MongoDB-shell.

Als alternatief kunt u bouwersinterfaces gebruiken als dat u logischer lijkt:

    QueryBuilder builder = QueryBuilder.start();

    builder.and("objectKey").regex(Pattern.compile("box"));
    builder.and("cache_version_string").is("08/03/15_11:05:09");

    BasicDBObject query = (BasicDBObject)builder.get();

    Bson projection = Projections.exclude(
            "_id",
            "obectdata",
            "lasModified",
            "productCode"
    );

    MongoCursor<Document> cursor = collection.find(query).projection(projection).iterator();

    while (cursor.hasNext()) {
        Document doc = cursor.next();
        System.out.println(doc.toJson());
    }

Beide vormen construeren in wezen de BSON voor zowel de "query"- als de "projectie"-componenten en geven deze als argumenten aan de .find() methode. Er zijn ook definities van klassentypes als dat ook bij u past.




  1. Haal de hele array op met een van de strings. De array bevindt zich in een andere array. Mongodb/Javascript

  2. spring-redis kan geen verbinding maken met externe host

  3. MongoDB Veel-op-veel-associatie

  4. Dubbelzinnigheid over $geoNear in geaggregeerde zoekopdracht