假设我在mongdb中存储了以下模型列表。
@Document
public class Product {
private String productName;
private List<Customer> customers;
}
public class Customer {
public String firstName;
List<Address> addresses;
}
public class Address {
private String address;
}
我有以下数据。
我想获取与以下查询相关的所有地址。
Query query = new Query();
Criteria product = Criteria.where("productName").is("CHAIR");
Criteria customer = Criteria.where("customers. firstName").is("Ann");
我希望获得上层查询的地址列表,而不包含客户的循环列表。
我使用弹簧数据, 所以我想知道如何通过MatchOperation,ProjectionOperation,Aggregation或MapReduce以及客户的循环列表来实现这一点。
答案 0 :(得分:0)
db.productDB.aggregate({$match:{"productName":"CHAIR"}},
{$unwind:"$customers"},{$match:{"customers.firstName":"Ann"}},{$project:{
_id:"$productName", address:"$addresses"})
请查看mongodb聚合框架以获取更多详细信息