Então, basicamente, você precisa fazer o filtro.
MongoTemplate
oferece muita operação para mongodb, se alguns métodos não existirem no MongoTemplate, podemos usar Bson Document
padronizar. Nesse caso, tente este artigo:Truque para a consulta secreta do shell do mongo. Na verdade, você precisa de uma consulta do Mongo, algo como seguir. Usando
$addFields
um dos métodos mostrados abaixo. Mas você pode usar $project
, $set
etc. Aqui $addFields
substitui seu history_dates
. (Ele usa para adicionar novos campos ao documento também). {
$addFields: {
history_dates: {
$filter: {
input: "$history_dates",
cond: {
$and: [{
$gt: ["$$this", "23/07/2020"]
},
{
$lt: ["$$this", "24/07/2020"]
}
]
}
}
}
}
}
Parque infantil Mongo de trabalho.
Você precisa converter isso em dados de primavera. Então
@Autowired
o MongoTemplate em sua classe. @Autowired
MongoTemplate mongoTemplate;
O método é,
public List<Object> filterDates(){
Aggregation aggregation = Aggregation.newAggregation(
a->new Document("$addFields",
new Document("history_dates",
new Document("$filter",
new Document("input","$history_dates")
.append("cond",
new Document("$and",
Arrays.asList(
new Document("$gt",Arrays.asList("$$this","23/07/2020")),
new Document("$lt",Arrays.asList("$$this","24/07/2020"))
)
)
)
)
)
)
).withOptions(AggregationOptions.builder().allowDiskUse(Boolean.TRUE).build());
return mongoTemplate.aggregate(aggregation, mongoTemplate.getCollectionName(YOUR_CLASS.class), Object.class).getMappedResults();
}
O modelo Mongo não fornece métodos de adição para
$addFields
e $filter
. Então, vamos apenas com o padrão de documento bson. Eu não testei isso na primavera.