sql >> Databáze >  >> NoSQL >> MongoDB

$filter inside $project MongoDB pomocí Spring Data

Podařilo se mi vyřešit můj problém s verzí Spring boot 1.4.1.RELEASE a udělal jsem toto:

Aggregation aggregation = newAggregation(
            match(Criteria.where("devices.evaluationDate").is(date)),
            project().and(new AggregationExpression() {
                @Override
                public DBObject toDbObject(AggregationOperationContext aggregationOperationContext) {
                    DBObject filterExpression = new BasicDBObject();
                    filterExpression.put("input", "$devices");
                    filterExpression.put("as", "device");
                    filterExpression.put("cond", new BasicDBObject("$eq", Arrays.<Object> asList("$$device.evaluationDate", date)));
                    return new BasicDBObject("$filter", filterExpression);
                }
            }).as("devices")
    );

    AggregationResults<SpotMovimientos> list = mongoOperations.aggregate(aggregation,
            MyClass.class, MyClass.class);

Vypracoval jsem to na základě tohoto:Podporuje Spring Data MongoDb operátora agregací polí $filter?

Můj projekt byl na Spring boot 1.4.0.RELEASE, ale tato verze neměla AggregationExpression rozhraní PUBLIC, takže jsem aktualizoval na 1.4.1.RELEASE a fungoval jsem.



  1. Implementace pub/sub v nodeJS

  2. Automaticky odstranit odkazující objekty při smazání v MongoDB

  3. Aktualizujte hodnotu v MongoDB na základě její aktuální hodnoty

  4. mongodb, repliky a chyba:{ $err :not master and slaveOk=false, kód:13435 }