List of usage examples for com.mongodb.client.model Filters eq
public static <TItem> Bson eq(final String fieldName, @Nullable final TItem value)
From source file:com.cognifide.aet.vs.metadata.MetadataDAOMongoDBImpl.java
License:Apache License
@Override public boolean removeSuite(DBKey dbKey, String correlationId, Long version) throws StorageException { LOGGER.debug("Removing suite with correlationId {}, version {} from {}.", correlationId, version, dbKey); MongoCollection<Document> metadata = getMetadataCollection(dbKey); final DeleteResult deleteResult = metadata .deleteOne(Filters.and(Filters.eq(CORRELATION_ID_PARAM_NAME, correlationId), Filters.eq(SUITE_VERSION_PARAM_NAME, version))); return deleteResult.getDeletedCount() == 1; }
From source file:com.dydabo.blackbox.mongodb.tasks.MongoDeleteTask.java
License:Apache License
/** * @param row//from ww w .j a v a2 s . co m * @return */ private Boolean delete(T row) { Document doc = utils.parseRowToDocument(row); DeleteResult delResult = collection .deleteOne(Filters.eq(MongoUtils.PRIMARYKEY, doc.get(MongoUtils.PRIMARYKEY))); return delResult.wasAcknowledged(); }
From source file:com.dydabo.blackbox.mongodb.tasks.MongoFetchTask.java
License:Apache License
private List<T> fetch(String rowKey) { List<T> results = new ArrayList<>(); if (DyDaBoUtils.isBlankOrNull(rowKey)) { return results; }/*www. ja v a 2 s .c o m*/ FindIterable<Document> docIter; rowKey = (row.getClass().getTypeName()) + ":" + rowKey; if (isPartialKey) { docIter = collection.find(regex(MongoUtils.PRIMARYKEY, rowKey)); } else { docIter = collection.find(Filters.eq(MongoUtils.PRIMARYKEY, rowKey)); } for (Document doc : docIter) { T resultObject = new Gson().fromJson(doc.toJson(), (Type) row.getClass()); if (resultObject != null) { if (maxResults <= 0 || results.size() < maxResults) { results.add(resultObject); } else { break; } } } return results; }
From source file:com.dydabo.blackbox.mongodb.tasks.MongoInsertTask.java
License:Apache License
private Boolean upsertDocument(Document doc) { UpdateOptions uo = new UpdateOptions().upsert(true); getCollection().replaceOne(Filters.eq("_id", doc.get("_id")), doc, uo); return true;//from w w w . j ava 2 s . co m }
From source file:com.dydabo.blackbox.mongodb.tasks.MongoSearchTask.java
License:Apache License
/** * @param tableRow the value of tableRow * @return//from ww w. j av 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.egopulse.querydsl.mongodb.MongodbSerializer.java
License:Apache License
protected Bson handleEqOperation(Operation<?> expr) { if (expr.getArg(0) instanceof Operation) { // user.addresses.size().eq(1) return handleEqSizeOperation(expr); } else if (expr.getArg(0) instanceof Path) { // user: xyz return Filters.eq(asDBKey(expr, 0), asDBValue(expr, 1)); } else {// w ww . j a va 2s .c o m throw new UnsupportedOperationException("Illegal operation " + expr); } }
From source file:com.egopulse.querydsl.mongodb.MongodbSerializer.java
License:Apache License
@SuppressWarnings("unchecked") @Override//from w w w. j a v a 2 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.epam.dlab.billing.azure.AzureBillableResourcesService.java
License:Apache License
private String getConfigurationSettingValue(String key) { Document document = mongoDbBillingClient.getDatabase().getCollection(MongoKeyWords.SETTINGS_COLLECTION) .find(Filters.eq(MongoKeyWords.MONGO_ID, key)).first(); if (document != null) { String value = document.getString("value"); if (StringUtils.isEmpty(value)) { throw new IllegalStateException("Configuration " + key + " does not have value in settings"); }//from w ww . ja v a 2 s . c o m log.info("Key {} has value {}", key, value); return value; } else { throw new IllegalStateException("Configuration " + key + " is not present in settings"); } }
From source file:com.epam.dlab.billing.azure.AzureBillingDetailsService.java
License:Apache License
public void updateBillingDetails(String user) { log.debug("Updating billing details for user {}", user); try {//from www. j a va2 s .c o m AggregateIterable<Document> aggregateIterable = mongoDbBillingClient.getDatabase() .getCollection(MongoKeyWords.BILLING_DETAILS) .aggregate(Lists.newArrayList( Aggregates.match(Filters.and(Filters.eq(MongoKeyWords.DLAB_USER, user), Filters.in(MongoKeyWords.RESOURCE_TYPE, DlabResourceType.EXPLORATORY.toString(), DlabResourceType.COMPUTATIONAL.toString(), DlabResourceType.VOLUME.toString()))), Aggregates.group( getGroupingFields(MongoKeyWords.DLAB_ID, MongoKeyWords.DLAB_USER, MongoKeyWords.EXPLORATORY_ID, MongoKeyWords.RESOURCE_TYPE, MongoKeyWords.RESOURCE_NAME, MongoKeyWords.COMPUTATIONAL_ID, MongoKeyWords.METER_CATEGORY), Accumulators.sum(MongoKeyWords.COST, MongoKeyWords.prepend$(MongoKeyWords.COST)), Accumulators.min(MongoKeyWords.USAGE_FROM, MongoKeyWords.prepend$(MongoKeyWords.USAGE_DAY)), Accumulators.max(MongoKeyWords.USAGE_TO, MongoKeyWords.prepend$(MongoKeyWords.USAGE_DAY))), Aggregates.sort(Sorts.ascending(MongoKeyWords.prependId(MongoKeyWords.RESOURCE_NAME), MongoKeyWords.prependId(MongoKeyWords.METER_CATEGORY))))); updateBillingDetails(user, mapToDetails(aggregateIterable)); } catch (RuntimeException e) { log.error("Updating billing details for user {} is failed", user, e); } }
From source file:com.epam.dlab.billing.azure.AzureBillingDetailsService.java
License:Apache License
private void updateBillingDetails(String user, List<Document> billingDetails) { if (!billingDetails.isEmpty()) { Map<String, List<Document>> info = new HashMap<>(); Consumer<Document> aggregator = e -> { String notebookId = e.getString(MongoKeyWords.EXPLORATORY_ID); List<Document> documents = info.get(notebookId); if (documents == null) { documents = new ArrayList<>(); }/*from w w w. j a v a2 s . c om*/ documents.add(e); info.put(notebookId, documents); }; billingDetails.stream().filter( e -> DlabResourceType.EXPLORATORY.toString().equals(e.getString(MongoKeyWords.RESOURCE_TYPE))) .forEach(aggregator); billingDetails.stream().filter( e -> DlabResourceType.COMPUTATIONAL.toString().equals(e.getString(MongoKeyWords.RESOURCE_TYPE))) .forEach(aggregator); billingDetails.stream().filter( e -> DlabResourceType.VOLUME.toString().equals(e.getString(MongoKeyWords.RESOURCE_TYPE))) .forEach(aggregator); for (Map.Entry<String, List<Document>> entry : info.entrySet()) { double sum = entry.getValue().stream().mapToDouble(e -> e.getDouble(MongoKeyWords.COST)).sum(); entry.getValue().forEach(e -> e.put(MongoKeyWords.COST_STRING, BillingCalculationUtils.formatDouble(e.getDouble(MongoKeyWords.COST)))); log.debug("Update billing for notebook {}, cost is {} {}", entry.getKey(), sum, currencyCode); Bson updates = Updates.combine( Updates.set(MongoKeyWords.COST_STRING, BillingCalculationUtils.formatDouble(sum)), Updates.set(MongoKeyWords.COST, sum), Updates.set(MongoKeyWords.CURRENCY_CODE, currencyCode), Updates.set(MongoKeyWords.BILLING_DETAILS, entry.getValue())); UpdateResult updateResult = mongoDbBillingClient.getDatabase() .getCollection(MongoKeyWords.NOTEBOOK_COLLECTION) .updateOne(Filters.and(Filters.eq(MongoKeyWords.DLAB_USER, user), Filters.eq(MongoKeyWords.EXPLORATORY_ID_OLD, entry.getKey())), updates); log.debug("Update result for {}/{} is {}", user, entry.getKey(), updateResult); } } else { log.warn("No billing details found for notebooks for user {}", user); } }