List of usage examples for com.mongodb.client.model Filters and
public static Bson and(final Bson... filters)
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)); }/* ww w. j av a 2s. 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
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); }//www . jav a2 s .c o m } }; 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.epam.dlab.backendapi.dao.azure.AzureBillingDAO.java
License:Apache License
public Document getReport(UserInfo userInfo, AzureBillingFilter filter) { boolean isFullReport = UserRoles.checkAccess(userInfo, RoleType.PAGE, "/api/infrastructure_provision/billing"); if (isFullReport) { if (filter.getUser() != null) { filter.getUser().replaceAll(String::toLowerCase); }//from www. java2s. c om } else { filter.setUser(Lists.newArrayList(userInfo.getName().toLowerCase())); } List<Bson> matchCriteria = matchCriteria(filter); List<Bson> pipeline = new ArrayList<>(); if (!matchCriteria.isEmpty()) { pipeline.add(Aggregates.match(Filters.and(matchCriteria))); } pipeline.add(groupCriteria()); pipeline.add(sortCriteria()); return prepareReport(filter.getStatuses(), filter.getNodeSize() != null && !filter.getNodeSize().isEmpty(), getCollection(MongoKeyWords.BILLING_DETAILS).aggregate(pipeline), getShapes(filter.getNodeSize())) .append(FULL_REPORT, isFullReport); }
From source file:com.github.cherimojava.data.mongo.query.QueryInvocationHandler.java
License:Apache License
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); switch (methodName) { case "e": // this is just a handout for the entity to get knowledge of what to check return this.entityProxy.get(); case "where":/* fallthrough */ case "and": return this.specifier.get(); case "iterator": FindIterable it = coll.find(Filters.and(filters.toArray(new Bson[] {}))); if (limit != null) { it.limit(limit);/*ww w . j ava 2s . c om*/ } if (skip != null) { it.skip(skip); } if (sorts.size() > 0) { it.sort(Sorts.orderBy(sorts)); } return it.iterator(); case "count": return coll.count(Filters.and(filters.toArray(new Bson[] {}))); case "limit": limit = (Integer) args[0]; return queryEnd.get(); case "skip": skip = (Integer) args[0]; return queryEnd.get(); case "sort": checkState(!sortSet, "Sorting can be specified only once"); sortSet = true; return querySort.get(); case "desc":/* fallthrough */ case "asc": return addSortInformation("asc".equals(methodName)); case "by": return addSortInformation(args[0] == QuerySort.Sort.ASC); } throw new IllegalStateException("Unknown method found: " + methodName); }
From source file:com.kaibla.hamster.persistence.query.And.java
@Override public Bson buildQuery() { ArrayList<Bson> filters = new ArrayList(conditions.size()); for (Condition c : conditions) { filters.add(c.buildQuery());//from ww w .j a va 2 s .c o m } return Filters.and(filters); }
From source file:com.kaibla.hamster.persistence.query.And.java
@Override public Bson buildShadowQuery() { ArrayList<Bson> filters = new ArrayList(conditions.size()); for (Condition c : conditions) { filters.add(c.buildShadowQuery()); }//from w w w . j a v a2s .c o m return Filters.and(filters); }
From source file:com.px100systems.data.plugin.storage.mongo.FilterQueryBuilder.java
License:Open Source License
@Override public Bson convert(and predicate) { List<Bson> q = new ArrayList<>(); for (Criteria c : predicate.getMembers()) q.add(c.convert(this)); return Filters.and(q); }
From source file:com.streamsets.pipeline.stage.origin.mongodb.oplog.MongoDBOplogSource.java
License:Apache License
private void prepareCursor(int timestampSeconds, int ordinal, List<OplogOpType> filterOplogTypes, int batchSize) { LOG.debug("Getting new cursor with offset - TimeStampInSeconds:'{}', Ordinal : '{}' and Batch Size : '{}'", timestampSeconds, ordinal, batchSize); FindIterable<Document> mongoCursorIterable = mongoCollection.find() //As the collection is a capped collection we use Tailable cursor which will return results in natural order in this case //based on ts timestamp field. //Tailable Await does not return and blocks, so we are using tailable. .cursorType(CursorType.Tailable).batchSize(batchSize); List<Bson> andFilters = new ArrayList<>(); //Only filter if we already have saved/initial offset specified or else both time_t and ordinal will not be -1. if (timestampSeconds > 0 && ordinal >= 0) { andFilters.add(Filters.gt(TIMESTAMP_FIELD, new BsonTimestamp(timestampSeconds, ordinal))); }//from www . ja v a 2 s .co m if (!filterOplogTypes.isEmpty()) { List<Bson> oplogOptypeFilters = new ArrayList<>(); Set<OplogOpType> oplogOpTypesSet = new HashSet<>(); for (OplogOpType filterOplogopType : filterOplogTypes) { if (oplogOpTypesSet.add(filterOplogopType)) { oplogOptypeFilters.add(Filters.eq(OP_TYPE_FIELD, filterOplogopType.getOp())); } } //Add an or filter for filtered Or Types andFilters.add(Filters.or(oplogOptypeFilters)); } //Finally and timestamp with oplog filters if (!andFilters.isEmpty()) { mongoCursorIterable = mongoCursorIterable.filter(Filters.and(andFilters)); } cursor = mongoCursorIterable.iterator(); }
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()))); }//from w w w . java 2 s. 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:io.lumeer.storage.mongodb.dao.project.MongoViewDao.java
License:Open Source License
private static Bson viewSearchFilter(SearchQuery query) { List<Bson> filters = new ArrayList<>(); if (query.isCollectionIdsQuery()) { filters.add(Filters.in(MongoUtils.concatParams(ViewCodec.QUERY, QueryCodec.COLLECTION_IDS), query.getCollectionIds())); }//www . j a v a 2s .co m if (query.isFulltextQuery()) { filters.add( Filters.regex(ViewCodec.NAME, Pattern.compile(query.getFulltext(), Pattern.CASE_INSENSITIVE))); } filters.add(MongoFilters.permissionsFilter(query)); return Filters.and(filters); }