sql >> Base de Datos >  >> NoSQL >> MongoDB

Diferencia entre ahora y una fecha dada

Prueba esto:

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

Básicamente, puede convertir su consulta javascript/JSON en un formulario de plantilla de Spring Mongo usando this. También puede consultar ArithmeticOperators.Subtract en el paquete org.springframework.data.mongodb.core.aggregation.

Escribí este código un poco detallado, puedes hacer lo mismo sin crear una lista y todas las demás cosas, como tenías en cuestión.