嵌入式文档内部字段的 Spring Data Mongo DB 查询(DBRef)

标签 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());

最佳答案

您的查询看起来是正确的;您应该能够根据 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()));

关于嵌入式文档内部字段的 Spring Data Mongo DB 查询(DBRef),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578057/

相关文章:

java - InvalidMediaTypeException - 我受到攻击了吗?

node.js - MongoDB 查询子文档中的不同内容

c# - 在 MongoDB 中安全地插入或更新子文档

java - 我正在开发一个简单的 Spring Boot 应用程序,它没有按照我的预期工作

java - 在单元测试中禁用 JMS 使用 bean

javascript - 有没有一种方法可以将 MongoDB 中的两个数组合并为一个数组?

mongodb - 使用 mongo 计算所有文档中的数组出现次数

javascript - 查找文档,然后在数组中查找条目并将其从数组中删除

mongodb - Mongo 时区聚合

java.sql.SQLException : ORA-01017: invalid username/password; logon denied 异常