Java 使用Spring mongo使用对象的2个属性进行计数查询
我正在使用mongo存储以下数据Java 使用Spring mongo使用对象的2个属性进行计数查询,java,mongodb,spring-boot,aggregation-framework,Java,Mongodb,Spring Boot,Aggregation Framework,我正在使用mongo存储以下数据 Class Restaurant { String status; String name; String location; } 我的mongo中的数据量非常大。我想根据给定列表中餐厅的状态和名称获取计数 有两个输入列表: List<String> restaurants = {'PizzaHub', 'Cheese&u', 'FoodForU', 'Mcdonalds'} List<String> status
Class Restaurant {
String status;
String name;
String location;
}
我的mongo中的数据量非常大。我想根据给定列表中餐厅的状态和名称获取计数
有两个输入列表:
List<String> restaurants = {'PizzaHub', 'Cheese&u', 'FoodForU', 'Mcdonalds'}
List<String> status = {'Open', 'Closed', 'Open', 'Open'}
public interface RestaurantRepository extends MongoRepository<Restaurant, String> {
public long countByNameAndStatus(String name, String status);
}
请提供一些示例,例如当前代码会发生什么情况?你算了多少?但是你的预期数量是多少?为什么会是这样?@palaѕn预期数量应该是所有“PizzaHub”类型的餐厅,它们是“开放的”,“Cheese&u”类型的餐厅是“关闭的”,“FoodForU”类型的餐厅是“开放的”,而“Mcdonalds”类型的餐厅是“开放的”。我得到的数量是正确的,但查询时间很长。我想通过对给定的列表使用聚合查询来减少时间,而不是对列表中的每个元素单独启动聚合查询。好的,请发布您对聚合查询的尝试,并明确说明您遇到的问题。您可以尝试使用repository方法以及
@query
注释:@prasad\ucode>@query的工作原理与CountByName和Status完全相同。Mongo repository通过函数名自动理解,不需要使用@Query
。请提供一些示例,例如当前代码会发生什么情况?你算了多少?但是你的预期数量是多少?为什么会是这样?@palaѕn预期数量应该是所有“PizzaHub”类型的餐厅,它们是“开放的”,“Cheese&u”类型的餐厅是“关闭的”,“FoodForU”类型的餐厅是“开放的”,而“Mcdonalds”类型的餐厅是“开放的”。我得到的数量是正确的,但查询时间很长。我想通过对给定的列表使用聚合查询来减少时间,而不是对列表中的每个元素单独启动聚合查询。好的,请发布您对聚合查询的尝试,并明确说明您遇到的问题。您可以尝试使用repository方法以及@query
注释:@prasad\ucode>@query的工作原理与CountByName和Status完全相同。Mongo存储库通过函数名自动理解,不需要@Query
for(int i = 0; i < restaurants.size(); i++) {
restaurantRepo.countByNameAndStatus(restaurants.get(i), status.get(i))
}
{
PizzaHub: 1307,
Cheese&u: 154,
FoodForU: 964,
Mcdonalds: 1034
}