Jadi pada dasarnya Anda perlu melakukan filter. MongoTemplate menawarkan banyak operasi untuk mongodb, jika beberapa metode tidak ada di MongoTemplate, kita dapat menggunakan Bson Document pola. Dalam hal ini, coba artikel ini:Trik untuk menyembunyikan kueri mongo shell.
Sebenarnya Anda memerlukan kueri Mongo seperti mengikuti. Menggunakan $addFields salah satu metode yang ditunjukkan di bawah ini. Tetapi Anda dapat menggunakan $project , $set dll. Di sini $addFields menimpa history_dates . Anda . (Digunakan untuk menambahkan bidang baru ke dokumen juga).
{
$addFields: {
history_dates: {
$filter: {
input: "$history_dates",
cond: {
$and: [{
$gt: ["$$this", "23/07/2020"]
},
{
$lt: ["$$this", "24/07/2020"]
}
]
}
}
}
}
}
Taman bermain Mongo yang berfungsi.
Anda perlu mengubahnya menjadi data pegas. Jadi @Autowired MongoTemplate di kelas Anda.
@Autowired
MongoTemplate mongoTemplate;
Caranya adalah,
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();
}
Template Mongo tidak menyediakan metode penambahan untuk $addFields dan $filter . Jadi kita hanya pergi dengan pola dokumen bson. Saya belum menguji ini di Musim Semi.