MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Diferença entre agora e uma determinada data


Tente isto:
String jsonExpression = "{\"$subtract\":[new ISODate(),\"$ping_date\"]}";
AggregationOperation project = Aggregation.project().and(context -> context.getMappedObject(Document.parse(jsonExpression))).as("difference");
AggregationOperation match = Aggregation.match(Criteria.where("difference").gte("timeout"));

List<AggregationOperation> aggOps = new ArrayList<>();
aggOps.add(project);
aggOps.add(match);
Aggregation aggregation = Aggregation.newAggregation(aggOps);
return mongoTemplate.aggregate(aggregation, RegisteredApp.class, RegisteredApp.class).getMappedResults();

Basicamente, você pode converter sua consulta javascript/JSON para o formulário de modelo Spring Mongo usando isso. Você também pode verificar ArithmeticOperators.Subtract no pacote org.springframework.data.mongodb.core.aggregation.

Eu escrevi este código um pouco verboso, você pode fazer o mesmo sem criar lista e todas as outras coisas, como você tinha em questão.