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.