我对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的元素列表
,如何实现这一点感谢您的帮助。
答案 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);