是否有一种方法可以在ReactiveMongoRepository中执行本地查询,例如使用@Query注释的JpaRepository?喜欢这个:
public interface MyRepository extends JpaRepository<MyClass, Long> {
@Query(value= "SELECT id FROM my_table ORDER BY RAND() LIMIT 1" , nativeQuery = true)
public Long getRandomData();
}
这是我要执行的查询:
db.airportControl.aggregate([
{ "$match": {
"$and": [
{ "$expr": { "$eq": [{ "$year": "$boardingDate" }, 2019] }},
{ "airportDestiny": "MAD"}
]
}},
{ "$group": {
"_id": null,
"average": {
"$avg": { "$subtract": ["$boardingDate", "$securityGateDate"] }
}
}}
]);
答案 0 :(得分:0)
public interface PersonRepository extends CrudReppsitory<Person, String> {
@Aggregation("{ $group: { _id : $lastname, names : { $addToSet : $firstname } } }")
List<PersonAggregate> groupByLastnameAndFirstnames();
@Aggregation("{ $group: { _id : $lastname, names : { $addToSet : $firstname } } }")
List<PersonAggregate> groupByLastnameAndFirstnames(Sort sort);
@Aggregation("{ $group: { _id : $lastname, names : { $addToSet : $?0 } } }")
List<PersonAggregate> groupByLastnameAnd(String property);
@Aggregation("{ $group: { _id : $lastname, names : { $addToSet : $?0 } } }")
List<PersonAggregate> groupByLastnameAnd(String property, Pageable page);
@Aggregation("{ $group : { _id : null, total : { $sum : $age } } }")
SumValue sumAgeUsingValueWrapper();
@Aggregation("{ $group : { _id : null, total : { $sum : $age } } }")
Long sumAge();
@Aggregation("{ $group : { _id : null, total : { $sum : $age } } }")
AggregationResults<SumValue> sumAgeRaw();
@Aggregation("{ '$project': { '_id' : '$lastname' } }")
List<String> findAllLastnames();
}
这些用于Spring Data Mongo,但它们也应应用于ReactiveMongoRepository,因为:
- 反应性MongoDB存储库
本章描述了对MongoDB的反应式存储库支持的特殊性。本章以[repositories]中解释的核心存储库支持为基础。您应该对这里介绍的基本概念有一个很好的了解。