MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Différence entre maintenant et une date donnée

Essayez ceci :

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

Fondamentalement, vous pouvez convertir votre requête javascript/JSON en formulaire de modèle Spring Mongo en utilisant ceci. Vous pouvez également consulter ArithmeticOperators.Subtract dans le package org.springframework.data.mongodb.core.aggregation.

J'ai écrit ce code un peu verbeux, vous pouvez faire la même chose sans créer de liste et toutes les autres choses, comme vous l'aviez en question.