使用spring-data-mongodb基于mongodb的DBRef列表中的匹配元素进行查询

时间:2013-07-17 10:03:58

标签: mongodb spring-data-mongodb dbref

我对mongodb很新。我正在使用spring-data-mongodb来查询我的java。如果可以实现,请指导我。

假设我有两个对象“Car”和“User”如下,其中car有用户列表,

Class Car {

    @Id
    String id;
    String model;
    @DBRef
    List<User> users;
    @DBRef
    Company company;

}

Class User {

    @Id
    String id;
    String name;

}

我想为用户找到所有汽车,(找到所有汽车用户已经给用户的车辆)

是否可以使用spring-data-mongodb实现?

如果只有一个DBRef元素,这很容易,例如,对于公司我可以写这样的查询,

new Query(Criteria.where("company.$id").is(new ObjectId(companyId)))

但是,如果有一个引用为DBRef的元素列表

,如何实现这一点

感谢您的帮助。

2 个答案:

答案 0 :(得分:11)

查询数组中的一个元素就像查询字段相等一样。您可以阅读MongoDB文档here。所以你的查询将是:

new Query(Criteria.where("users.$id").is(new ObjectId(userId)))

答案 1 :(得分:4)

存储库界面中的

在方法上键入以下查询:

@Query("{'company' :{'$ref' : 'company' , '$id' : ?0}}")
Company find(String companyId);