嵌入式文档内部字段的Spring数据mongo db查询(DBRef)

时间:2014-12-20 07:24:17

标签: spring mongodb mongodb-query spring-data-mongodb

我有一份文件,其中包含另外两份文件的参考资料。我必须在UserLogin和shopmaster的id的基础上查询。我怎么能做到这一点。请建议如何查询。

@Id
private String userShopAssociationId;

@DBRef
private UserLogin userLogin;

@DBRef
private ShopMaster shopMaster;

Query query = new Query();
query.addCriteria(Criteria.where("userLogin.$id").is(userShopAssociationForm.getUserLoginId()));
query.addCriteria(Criteria.where("shopMaster.$id").is(userShopAssociationForm.getShopMasterId());

1 个答案:

答案 0 :(得分:5)

您看起来正确的查询;您应该能够根据DBRef的_id进行查询。这是因为DBRef将集合,id和(有时)数据库存储在父文档中。但是,您可能需要将您要比较的ID转换为ObjectId,如下所示:

Query query = new Query();
query.addCriteria(Criteria.where("userLogin.$id").is(new ObjectId(userShopAssociationForm.getUserLoginId())));
query.addCriteria(Criteria.where("shopMaster.$id").is(new ObjectId(userShopAssociationForm.getShopMasterId()));