したがって、基本的にはフィルターを実行する必要があります。 MongoTemplate
mongodbに多くの操作を提供します。MongoTemplateにいくつかのメソッドが存在しない場合は、Bson Document
を使用できます。 パターン。その場合は、次の記事を試してください:mongoシェルクエリを隠蔽するためのトリック。
実際には、次のようなMongoクエリが必要です。 $addFields
の使用 以下に示す方法の1つ。ただし、$project
は使用できます 、$set
など。ここで$addFields
history_dates
を上書きします 。 (ドキュメントに新しいフィールドを追加するためにも使用されます)。
{
$addFields: {
history_dates: {
$filter: {
input: "$history_dates",
cond: {
$and: [{
$gt: ["$$this", "23/07/2020"]
},
{
$lt: ["$$this", "24/07/2020"]
}
]
}
}
}
}
}
働くモンゴの遊び場。
これを春のデータに変換する必要があります。つまり、@Autowired
クラスのMongoTemplate。
@Autowired
MongoTemplate mongoTemplate;
方法は、
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();
}
Mongoテンプレートは、$addFields
の追加メソッドを提供していません および$filter
。したがって、bsonドキュメントパターンを使用します。私はこれを春にテストしていません。