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

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

Introduction

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

Prototype

public static <TItem> Bson eq(final String fieldName, @Nullable final TItem value) 

Source Link

Document

Creates a filter that matches all documents where the value of the field name equals the specified value.

Usage

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);
    }
}