List of usage examples for com.mongodb.client.model Filters regex
public static Bson regex(final String fieldName, final Pattern pattern)
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)); }