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

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

Introduction

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

Prototype

public static Bson regex(final String fieldName, final Pattern pattern) 

Source Link

Document

Creates a filter that matches all documents where the value of the field matches the given regular expression pattern with the given options applied.

Usage

From source file:com.dydabo.blackbox.mongodb.tasks.MongoRangeSearchTask.java

License:Apache License

@Override
protected List<T> compute() {

    List<T> results = new ArrayList<>();

    GenericDBTableRow startTableRow = utils.convertRowToTableRow(startRow);
    GenericDBTableRow endTableRow = utils.convertRowToTableRow(endRow);
    List<Bson> filterList = new ArrayList<>();

    startTableRow.forEach((familyName, columnName, columnValue, columnValueAsString) -> {
        if (DyDaBoUtils.isValidRegex(columnValueAsString)) {
            if (DyDaBoUtils.isNumber(columnValue)) {
                filterList.add(Filters.gte(columnName, columnValue));
            } else {
                if (DyDaBoUtils.isARegex(columnValueAsString)) {
                    filterList.add(Filters.regex(columnName, columnValueAsString));
                } else {
                    filterList.add(Filters.gte(columnName, columnValueAsString));
                }//from   www .j av a 2  s .  co  m
            }
        }
    });

    endTableRow.forEach((familyName, columnName, columnValue, columnValueAsString) -> {
        if (DyDaBoUtils.isValidRegex(columnValueAsString)) {
            if (DyDaBoUtils.isNumber(columnValue)) {
                filterList.add(Filters.lt(columnName, columnValue));
            } else {
                if (DyDaBoUtils.isARegex(columnValueAsString)) {
                    filterList.add(Filters.regex(columnName, columnValueAsString));
                } else {
                    filterList.add(Filters.lt(columnName, columnValueAsString));
                }
            }
        }
    });

    String type = startRow.getClass().getTypeName();

    Block<Document> addToResultBlock = (Document doc) -> {
        T resultObject = new Gson().fromJson(doc.toJson(), (Type) startRow.getClass());
        if (resultObject != null) {
            results.add(resultObject);
        }
    };

    logger.finest("Filters :" + filterList);
    filterList.add(Filters.regex(MongoUtils.PRIMARYKEY, type + ":.*"));
    if (filterList.size() > 0) {
        collection.find(Filters.and(filterList)).forEach(addToResultBlock);
    } else {
        collection.find().forEach(addToResultBlock);
    }

    return results;
}

From source file:com.dydabo.blackbox.mongodb.tasks.MongoSearchTask.java

License:Apache License

/**
 * @param tableRow the value of tableRow
 * @return//from  w  w w . j a  v  a 2s. c o m
 */
private List<Bson> parseFilters(GenericDBTableRow tableRow) {
    List<Bson> filterList = new ArrayList<>();

    tableRow.forEach((familyName, columnName, columnValue, columnValueAsString) -> {
        if (DyDaBoUtils.isValidRegex(columnValueAsString)) {
            if (DyDaBoUtils.isNumber(columnValue)) {
                filterList.add(Filters.eq(columnName, columnValue));
            } else {
                if (columnValueAsString.startsWith("[") || columnValueAsString.startsWith("{")) {
                    // TODO : search inside maps and arrays
                } else {
                    filterList.add(Filters.regex(columnName, columnValueAsString));
                }
            }
        }
    });

    return filterList;
}

From source file:com.dydabo.blackbox.mongodb.tasks.MongoSearchTask.java

License:Apache License

private List<T> search(T row) {
    List<T> results = new ArrayList<>();
    String type = row.getClass().getTypeName();
    Block<Document> addToResultBlock = (Document doc) -> {
        T resultObject = new Gson().fromJson(doc.toJson(), (Type) row.getClass());
        if (resultObject != null) {
            if (maxResult <= 0) {
                results.add(resultObject);
            } else if (results.size() < maxResult) {
                results.add(resultObject);
            }/*from   w w  w  .  ja v a 2  s . c  om*/
        }
    };

    GenericDBTableRow tableRow = utils.convertRowToTableRow(row);

    List<Bson> filterList = parseFilters(tableRow);
    filterList.add(Filters.regex(MongoUtils.PRIMARYKEY, type + ":.*"));

    logger.finest("Mongo Filter:" + filterList);
    if (filterList.size() > 0) {
        collection.find(Filters.and(filterList)).forEach(addToResultBlock);
    }

    return results;
}

From source file:com.egopulse.querydsl.mongodb.MongodbSerializer.java

License:Apache License

@SuppressWarnings("unchecked")
@Override//from w w w.  j av a2 s  .c o  m
public Object visit(Operation<?> expr, Void context) {
    Operator op = expr.getOperator();

    /**
     * user.firstName.eq("test")
     * user.addresses.size().eq(20)
     */
    if (op == Ops.EQ) {
        return handleEqOperation(expr);
    }

    /**
     * user.firstName.ne("test")
     */
    else if (op == Ops.NE) {
        return Filters.ne(asDBKey(expr, 0), asDBValue(expr, 1));

    }

    /**
     * user.firstName.isEmpty()
      */
    else if (op == Ops.STRING_IS_EMPTY) {
        return Filters.eq(asDBKey(expr, 0), new BsonString(""));
    }

    /**
     * user.firstName.eq("test").and(user.lastName.eq("blah"))
     */
    else if (op == Ops.AND) {
        Bson leftOperation = (Bson) handle(expr.getArg(0));
        Bson rightOperation = (Bson) handle(expr.getArg(1));

        return Filters.and(leftOperation, rightOperation);
    }

    /**
     * user.firstName.not[Operation]
     */
    else if (op == Ops.NOT) {
        //Handle the not's child
        Operation<?> subOperation = (Operation<?>) expr.getArg(0);
        Operator subOp = subOperation.getOperator();
        if (subOp == Ops.IN) {
            return visit(ExpressionUtils.operation(Boolean.class, Ops.NOT_IN, subOperation.getArg(0),
                    subOperation.getArg(1)), context);
        } else {
            Bson arg = (Bson) handle(expr.getArg(0));
            return Filters.not(arg);
        }
    }

    /**
     * user.firstName.eq("test").or(user.firstName.eq("else"))
     */
    else if (op == Ops.OR) {
        Bson leftOperation = (Bson) handle(expr.getArg(0));
        Bson rightOperation = (Bson) handle(expr.getArg(1));
        return Filters.or(leftOperation, rightOperation);
    }

    /**
     * Text matching operations
     */
    else if (op == Ops.STARTS_WITH) {
        return Filters.regex(asDBKey(expr, 0), Pattern.compile("^" + regexValue(expr, 1)));

    }

    else if (op == Ops.STARTS_WITH_IC) {
        return Filters.regex(asDBKey(expr, 0),
                Pattern.compile("^" + regexValue(expr, 1), Pattern.CASE_INSENSITIVE));

    }

    else if (op == Ops.ENDS_WITH) {
        return Filters.regex(asDBKey(expr, 0), Pattern.compile(regexValue(expr, 1) + "$"));

    }

    else if (op == Ops.ENDS_WITH_IC) {
        return Filters.regex(asDBKey(expr, 0),
                Pattern.compile(regexValue(expr, 1) + "$", Pattern.CASE_INSENSITIVE));

    }

    else if (op == Ops.EQ_IGNORE_CASE) {
        return Filters.regex(asDBKey(expr, 0),
                Pattern.compile("^" + regexValue(expr, 1) + "$", Pattern.CASE_INSENSITIVE));

    }

    else if (op == Ops.STRING_CONTAINS) {
        return Filters.regex(asDBKey(expr, 0), Pattern.compile(".*" + regexValue(expr, 1) + ".*"));

    }

    else if (op == Ops.STRING_CONTAINS_IC) {
        return Filters.regex(asDBKey(expr, 0),
                Pattern.compile(".*" + regexValue(expr, 1) + ".*", Pattern.CASE_INSENSITIVE));

    }

    else if (op == Ops.MATCHES) {
        return Filters.regex(asDBKey(expr, 0), Pattern.compile(asDBValue(expr, 1).toString()));
    }

    else if (op == Ops.MATCHES_IC) {
        return Filters.regex(asDBKey(expr, 0),
                Pattern.compile(asDBValue(expr, 1).toString(), Pattern.CASE_INSENSITIVE));

    }

    else if (op == Ops.LIKE) {
        String regex = ExpressionUtils.likeToRegex((Expression) expr.getArg(1)).toString();
        return Filters.regex(asDBKey(expr, 0), Pattern.compile(regex));

    }

    else if (op == Ops.BETWEEN) {
        return Filters.and(Filters.gte(asDBKey(expr, 0), asDBValue(expr, 1)),
                Filters.lte(asDBKey(expr, 0), asDBValue(expr, 2)));
    }

    else if (op == Ops.IN) {
        int constIndex = 0;
        int exprIndex = 1;
        if (expr.getArg(1) instanceof Constant<?>) {
            constIndex = 1;
            exprIndex = 0;
        }
        if (Collection.class.isAssignableFrom(expr.getArg(constIndex).getType())) {
            @SuppressWarnings("unchecked") //guarded by previous check
            Collection<?> values = ((Constant<? extends Collection<?>>) expr.getArg(constIndex)).getConstant();
            return Filters.in(asDBKey(expr, exprIndex), values);
        }

        /**
         * user.firstName.in(user.lastName)
         */

        else {
            throw new UnsupportedOperationException();
            //                Path<?> path = (Path<?>) expr.getArg(exprIndex);
            //                Constant<?> constant = (Constant<?>) expr.getArg(constIndex);
            //                return asDBObject(asDBKey(expr, exprIndex), convert(path, constant));
        }

    }

    else if (op == Ops.NOT_IN) {
        int constIndex = 0;
        int exprIndex = 1;
        if (expr.getArg(1) instanceof Constant<?>) {
            constIndex = 1;
            exprIndex = 0;
        }
        if (Collection.class.isAssignableFrom(expr.getArg(constIndex).getType())) {
            @SuppressWarnings("unchecked") //guarded by previous check
            Collection<?> values = ((Constant<? extends Collection<?>>) expr.getArg(constIndex)).getConstant();
            return Filters.nin(asDBKey(expr, exprIndex), values);
        } else {
            throw new UnsupportedOperationException();
            //                Path<?> path = (Path<?>) expr.getArg(exprIndex);
            //                Constant<?> constant = (Constant<?>) expr.getArg(constIndex);
            //                return asDBObject(asDBKey(expr, exprIndex), asDBObject("$ne", convert(path, constant)));
        }

    }

    else if (op == Ops.COL_IS_EMPTY) {
        String field = asDBKey(expr, 0);
        return Filters.or(Filters.exists(field, false), Filters.size(field, 0));
    }

    else if (op == Ops.LT) {
        return Filters.lt(asDBKey(expr, 0), asDBValue(expr, 1));

    } else if (op == Ops.GT) {
        return Filters.gt(asDBKey(expr, 0), asDBValue(expr, 1));

    } else if (op == Ops.LOE) {
        return Filters.lte(asDBKey(expr, 0), asDBValue(expr, 1));

    } else if (op == Ops.GOE) {
        return Filters.gte(asDBKey(expr, 0), asDBValue(expr, 1));

    } else if (op == Ops.IS_NULL) {
        return Filters.exists(asDBKey(expr, 0), false);

    } else if (op == Ops.IS_NOT_NULL) {
        return Filters.exists(asDBKey(expr, 0), true);

    }

    else if (op == Ops.CONTAINS_KEY) {
        Path<?> path = (Path<?>) expr.getArg(0);
        Expression<?> key = expr.getArg(1);
        return Filters.exists(visit(path, context) + "." + key.toString(), true);

    }
    //        else if (op == MongodbOps.NEAR) {
    //            return asDBObject(asDBKey(expr, 0), asDBObject("$near", asDBValue(expr, 1)));
    //
    //        } else if (op == MongodbOps.NEAR_SPHERE) {
    //            return asDBObject(asDBKey(expr, 0), asDBObject("$nearSphere", asDBValue(expr, 1)));
    //
    //        }
    //        else if (op == MongodbOps.ELEM_MATCH) {
    //            return Filters.elemMatch(asDBKey(expr, 0), asDBValue(expr, 1));
    //        }

    throw new UnsupportedOperationException("Illegal operation " + expr);
}

From source file:com.naryx.tagfusion.cfm.cache.impl.MongoCacheImpl.java

License:Open Source License

@Override
public void delete(String id, boolean exact) {
    statsDelete++;/*from  w w w .java  2 s.  c o m*/

    if (exact) {
        col.deleteOne(new Document("id", id));
    } else {
        col.deleteMany(Filters.regex("id", "" + id + "*"));
    }
}

From source file:com.px100systems.data.plugin.storage.mongo.FilterQueryBuilder.java

License:Open Source License

@Override
public Bson convert(containsText predicate) {
    return Filters.regex(predicate.getMember(), ".*" + Pattern.quote(predicate.getText()) + ".*");
}

From source file:com.px100systems.data.plugin.storage.mongo.FilterQueryBuilder.java

License:Open Source License

@Override
public Bson convert(startsWithText predicate) {
    return Filters.regex(predicate.getMember(), Pattern.quote(predicate.getText()) + ".*");
}

From source file:com.px100systems.data.plugin.storage.mongo.FilterQueryBuilder.java

License:Open Source License

@Override
public Bson convert(endsWithText predicate) {
    return Filters.regex(predicate.getMember(), ".*" + Pattern.quote(predicate.getText()));
}

From source file:Connections.ConexionMongoDB.java

public ArrayList<Migration> getImagesFilterBy(String filterName, String filterValue) {
    rMigrationList = new ArrayList<>();
    FindIterable<Document> iterable = db.getCollection(dbName).find(Filters.regex(filterName, filterValue))
            .sort(new Document("name", 1));
    iterable.forEach(new Block<Document>() {
        @Override/*from  www. j ava  2  s .co  m*/
        public void apply(final Document document) {
            Migration m = new Migration(document.getInteger("_id"), document.getString("name"),
                    document.getInteger("size"), document.getString("ext"), document.getString("path"), null);
            rMigrationList.add(m);
        }
    });
    return rMigrationList;
}

From source file:io.lumeer.storage.mongodb.dao.project.MongoViewDao.java

License:Open Source License

private Bson suggestionsFilter(final SuggestionQuery query) {
    Bson regex = Filters.regex(ViewCodec.NAME, Pattern.compile(query.getText(), Pattern.CASE_INSENSITIVE));
    return Filters.and(regex, MongoFilters.permissionsFilter(query));
}