2013-07-17 26 views
7

我对mongodb很新颖。我使用spring-data-mongodb来查询来自java的查询。请指导我如果这是可以实现的。基于MongoDB的DBRef列表中的匹配元素使用spring-data-mongodb进行查询

说我有两个对象“汽车”和“用户”如下,其中汽车有用户列表,

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引用的元素列表??

感谢您的帮助。

回答

9

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

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

嗨@Miguel,如果我想使用的用户名,而不是用户ID来搜索单个查询 – Sachin

+0

一直在寻找现在的答案@Sachin。你有没有找到它?每个人似乎都参考ID, – Hafiz

2
在仓库接口类型

的方法,此查询:

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

如果我们需要基于companyId和carId搜索在一起 –