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

Comment trouver une collection de code avec des critères réguliers et complexes à l'aide du pilote Java MongoDB ?

La construction de requêtes consiste simplement à créer une représentation de document BSON, qui est essentiellement la même interface que les interfaces HashMap ou List standard, selon le cas :

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

Où cela est fondamentalement identique à la façon dont vous structurez les requêtes dans le shell MongoDB.

Alternativement, vous pouvez utiliser des interfaces de constructeur si cela vous semble plus logique :

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

Les deux formes construisent essentiellement le BSON pour les composants "requête" et "projection" et les envoient comme arguments au .find() méthode. Il existe également des définitions de type de classe si cela vous convient également.