Драйвер Java MongoDB: запрос, где d> 2, a = "ABC", b = "AA" - PullRequest
0 голосов
/ 22 мая 2018

Это мой пример данных в mongodb,

{
    "a": "",
    "b": "",
    "c": "",
    "d": 0
},
{
    "a": "ABC",
    "b": "AA",
    "c": "12345678",
    "d": 1
}

Это мой Java-код для построения критериев и поиска, но я не получаю данные из MongoDb.

public Document buildCriteria(String a, String b, String c, String e,
                              String f, Double d) {

    Document criteria = new Document();

    if (StringUtils.isNotBlank(a)) {
        criteria.append("country", a);
    }

    if (StringUtils.isNotBlank(b)) {
        criteria.append("ccy", b);
    }

    if (StringUtils.isNotBlank(c)) {
        criteria.append("type", c);
    }

    if (StringUtils.isNotBlank(f)) {
        criteria.append("iCode", f);
    }


    if (StringUtils.isNotBlank(e)) {
        criteria.append("aNumber", e);
    }

    if (null != d) {
        criteria.append("d", new Document("$gt", d));
    }

    return criteria;
}

Finderable<Document> findDocument = dbName.find(criteria).limit(10);

Может ли кто-нибудь помочь мне в получении документов на основе следующих критериев с использованием кода Java:

d>2, a="ABC", b="AA"

1 Ответ

0 голосов
/ 22 мая 2018

Вот пример, встроенные комментарии должны помочь объяснить как выразить d>2 and a="ABC" and b="AA" в терминах, понятных для драйвера Mongo Java:

MongoClient mongoClient = ...;

// create a filter consisting of and'ed criteria
Bson filter = Filters.and(
        // d>2
        Filters.gt("d", 2),
        // a="ABC"
        Filters.eq("a", "ABC"),
        // b="AA"
        Filters.eq("b", "AA")
);

MongoCollection<Document> collection = mongoClient.getDatabase("...").getCollection("...");

FindIterable<Document> findDocument = collection.find(filter).limit(10);

Примечание: выне указывайте явно, какую версию драйвера Mongo Java вы используете, приведенный выше код действителен для версии 3.x.

...