sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man hittar kodsamling med regex och komplexa kriterier med Java MongoDB-drivrutin?

Att konstruera frågor är egentligen bara att skapa BSON-dokumentrepresentation, vilket i princip är samma gränssnitt som vanliga HashMap- eller List-gränssnitt som är lämpligt:

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

Där det i princip är identiskt med hur du strukturerar frågor i MongoDB-skalet.

Alternativt kan du använda byggargränssnitt om det verkar mer logiskt för dig:

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

Båda formerna konstruerar i huvudsak BSON för både "query"- och "projection"-komponenterna och utfärdar dem som argument till .find() metod. Det finns även klasstypsdefinitioner om det passar dig också.




  1. MongoDB cursor.count()

  2. Spring Data MongoDB eliminerar POJO:s

  3. Returnera det senaste dokumentet från en uppslagning

  4. Express node.js-kontrollern väntar inte på datamanipulering och returnerar gamla data