MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie finde ich die Codesammlung mit Regex und komplexen Kriterien mit dem Java MongoDB-Treiber?

Das Konstruieren von Abfragen ist wirklich nur das Erstellen einer BSON-Dokumentdarstellung, die im Grunde genau die gleiche Schnittstelle wie die Standard-HashMap- oder List-Schnittstellen ist, je nachdem:

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

Wobei das im Grunde identisch ist, wie Sie Abfragen in der MongoDB-Shell strukturieren.

Alternativ können Sie Builder-Schnittstellen verwenden, wenn Ihnen das logischer erscheint:

    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 Formen konstruieren im Wesentlichen den BSON sowohl für die Komponenten „query“ als auch „projection“ und geben sie als Argumente an .find() aus Methode. Es gibt auch Klassentyp-Definitionen, falls das auch zu Ihnen passt.