List of usage examples for com.mongodb.client.model Filters regex
public static Bson regex(final String fieldName, final String pattern, @Nullable final String options)
From source file:com.px100systems.data.plugin.storage.mongo.FilterQueryBuilder.java
License:Open Source License
@Override public Bson convert(icontainsText predicate) { return Filters.regex(predicate.getMember(), ".*" + Pattern.quote(predicate.getText()) + ".*", "i"); }
From source file:io.lumeer.storage.mongodb.dao.collection.MongoDataDao.java
License:Open Source License
private Bson createFilter(String collectionId, SearchQuery query) { List<Bson> filters = new ArrayList<>(); // does not work as expected - cannot search for a single character for example, only whole words if (query.isFulltextQuery()) { Collection collection = collectionDao.getCollectionById(collectionId); List<Attribute> fulltextAttrs = collection.getAttributes().stream() .filter(attr -> attr.getName().toLowerCase().contains(query.getFulltext().toLowerCase())) .collect(Collectors.toList()); // we only search by presence of the matching attributes if (fulltextAttrs.size() > 0) { filters.add(Filters.or(fulltextAttrs.stream().map(attr -> Filters.exists(attr.getId())) .collect(Collectors.toList()))); } else if (collection.getAttributes().size() > 0) { // we search by content filters.add(Filters.or(collection.getAttributes().stream() .map(attr -> Filters.regex(attr.getId(), query.getFulltext(), "i")) .collect(Collectors.toList()))); }//w w w. j av a2s .c o m } if (query.isDocumentIdsQuery()) { List<ObjectId> ids = query.getDocumentIds().stream().filter(ObjectId::isValid).map(ObjectId::new) .collect(Collectors.toList()); if (!ids.isEmpty()) { filters.add(Filters.in(ID, ids)); } } if (query.isFiltersQuery()) { List<Bson> attributeFilters = query.getFilters().stream().map(this::attributeFilter) .filter(Objects::nonNull).collect(Collectors.toList()); filters.addAll(attributeFilters); } final Bson result = filters.size() > 0 ? Filters.and(filters) : new Document(); return result; }
From source file:org.eclipse.ditto.services.thingsearch.persistence.read.criteria.visitors.CreateBsonPredicateVisitor.java
License:Open Source License
@Override public Function<String, Bson> visitLike(final String value) { // remove leading or trailing wildcard because queries like /^a/ are much faster than /^a.*$/ or /^a.*/ // from mongodb docs: // "Additionally, while /^a/, /^a.*/, and /^a.*$/ match equivalent strings, they have different performance // characteristics. All of these expressions use an index if an appropriate index exists; // however, /^a.*/, and /^a.*$/ are slower. /^a/ can stop scanning after matching the prefix." final String valueWithoutLeadingOrTrailingWildcard = removeLeadingOrTrailingWildcard(value); return fieldName -> Filters.regex(fieldName, valueWithoutLeadingOrTrailingWildcard, ""); }
From source file:org.opencb.commons.datastore.mongodb.MongoDBQueryUtils.java
License:Apache License
public static <T> Bson createFilter(String mongoDbField, T queryValue, ComparisonOperator comparator) { Bson filter = null;/*from w ww . j av a 2s . c om*/ if (queryValue != null) { if (queryValue instanceof String) { switch (comparator) { case EQUALS: filter = Filters.eq(mongoDbField, queryValue); break; case NOT_EQUALS: filter = Filters.ne(mongoDbField, queryValue); break; case EQUAL_IGNORE_CASE: filter = Filters.regex(mongoDbField, queryValue.toString(), "i"); break; case STARTS_WITH: filter = Filters.regex(mongoDbField, "^" + queryValue + "*"); break; case ENDS_WITH: filter = Filters.regex(mongoDbField, "*" + queryValue + "$"); break; case REGEX: filter = Filters.regex(mongoDbField, queryValue.toString()); break; case TEXT: filter = Filters.text(String.valueOf(queryValue)); break; default: break; } } else { switch (comparator) { case EQUALS: filter = Filters.eq(mongoDbField, queryValue); break; case NOT_EQUALS: filter = Filters.ne(mongoDbField, queryValue); break; case GREATER_THAN: filter = Filters.gt(mongoDbField, queryValue); break; case GREATER_THAN_EQUAL: filter = Filters.gte(mongoDbField, queryValue); break; case LESS_THAN: filter = Filters.lt(mongoDbField, queryValue); break; case LESS_THAN_EQUAL: filter = Filters.lte(mongoDbField, queryValue); break; default: break; } } } return filter; }