使用out循环从MongoDB文档获取内部对象列表。

时间:2018-01-06 06:35:46

标签: mongodb spring-data aggregate spring-data-mongodb projection

假设我在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以及客户的循环列表来实现这一点。

1 个答案:

答案 0 :(得分:0)

db.productDB.aggregate({$match:{"productName":"CHAIR"}},
{$unwind:"$customers"},{$match:{"customers.firstName":"Ann"}},{$project:{
_id:"$productName", address:"$addresses"})

请查看mongodb聚合框架以获取更多详细信息