Example usage for com.mongodb.client.model Filters all

List of usage examples for com.mongodb.client.model Filters all

Introduction

In this page you can find the example usage for com.mongodb.client.model Filters all.

Prototype

public static <TItem> Bson all(final String fieldName, final Iterable<TItem> values) 

Source Link

Document

Creates a filter that matches all documents where the value of a field is an array that contains all the specified values.

Usage

From source file:org.opencb.commons.datastore.mongodb.MongoDBQueryUtils.java

License:Apache License

public static <T> Bson createFilter(String mongoDbField, List<T> queryValues, ComparisonOperator comparator,
        LogicalOperator operator) {//from  w  w w .j av  a2  s .co m
    Bson filter = null;

    if (queryValues != null && queryValues.size() > 0) {

        if (comparator.equals(ComparisonOperator.IN) || comparator.equals(ComparisonOperator.NOT_IN)
                || comparator.equals(ComparisonOperator.ALL)) {
            switch (comparator) {
            case IN:
                filter = Filters.in(mongoDbField, queryValues);
                break;
            case NOT_IN:
                filter = Filters.nin(mongoDbField, queryValues);
                break;
            case ALL:
                filter = Filters.all(mongoDbField, queryValues);
                break;
            default:
                break;
            }
        } else {
            // If there is only on element in the array then it does not make sense to create an OR or AND filter
            if (queryValues.size() == 1) {
                filter = createFilter(mongoDbField, queryValues.get(0), comparator);
            } else {
                List<Bson> bsonList = new ArrayList<>(queryValues.size());
                for (T queryItem : queryValues) {
                    Bson filter1 = createFilter(mongoDbField, queryItem, comparator);
                    if (filter1 != null) {
                        bsonList.add(filter1);
                    }
                }

                if (operator.equals(LogicalOperator.OR)) {
                    filter = Filters.or(bsonList);
                } else {
                    filter = Filters.and(bsonList);
                }
            }

        }
    }

    return filter;
}