Spring 数据 Mongodb 按嵌入文档 ID 查询
Spring Data Mongodb Query by embedded document id
我正在尝试查询包含 @Reference 作为属性的模型,例如:
public class TaskGroups {
@Reference
Branch branch;
.
.
.
}
等等,然后我有一个包含更多逻辑和代码的查询,但在简历中我必须通过 Branch 对象的字段 _id 进行过滤,它只是对象上的 id 但在数据库上它的 _id,没问题它框架的正常行为。
现在好了,无效的代码:
public class TaskGroupRepositoryImpl implements TaskGroupCustomRepository {
private final MongoTemplate mongoTemplate;
@Autowired
public TaskGroupRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public List<TaskGroup> query(TaskGroupDynamicQuery queryObject) {
Query query = new Query();
final List<Criteria> criterias = new ArrayList<>();
criterias.add(Criteria.where("deleted").is(false));
if (queryObject.getBranchId() != null) {
criterias.add(Criteria.where("branch._id").is(new ObjectId(queryObject.getBranchId())));
}
.
.
.
}
因此,当代码运行查询时,将字段“branch._id”更改为仅分支!然后没有记录返回...
对于这种行为,我需要制定一个解决方法,将结果映射到 Object,然后转换为 taskGroup class,这样查询就不会对属性名称进行任何修改,并且过滤器不会出现问题。
这是一个错误吗?还是它的正常行为?有什么解决方法可以避免在 id 字段时更改此属性名称?
附件
尝试使用branch.$id
之类的东西
Criteria.where("branch" + "." + "$" + "id")
对于每个坚持这个问题的人,实际上没有解决这个问题的方法,在官方存储库上,维护者与我交谈,这是冻结的方式,要解决它,我将需要使用@DbRef ,但出于性能原因,大多数时候这不是一个可行的解决方案。
他们说将来有可能,因为他们正在努力增强 api 但目前还没有办法做到这一点。
增强问题是:enhancement issue
咨询的基础问题:base issue
我正在尝试查询包含 @Reference 作为属性的模型,例如:
public class TaskGroups {
@Reference
Branch branch;
.
.
.
}
等等,然后我有一个包含更多逻辑和代码的查询,但在简历中我必须通过 Branch 对象的字段 _id 进行过滤,它只是对象上的 id 但在数据库上它的 _id,没问题它框架的正常行为。
现在好了,无效的代码:
public class TaskGroupRepositoryImpl implements TaskGroupCustomRepository {
private final MongoTemplate mongoTemplate;
@Autowired
public TaskGroupRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public List<TaskGroup> query(TaskGroupDynamicQuery queryObject) {
Query query = new Query();
final List<Criteria> criterias = new ArrayList<>();
criterias.add(Criteria.where("deleted").is(false));
if (queryObject.getBranchId() != null) {
criterias.add(Criteria.where("branch._id").is(new ObjectId(queryObject.getBranchId())));
}
.
.
.
}
因此,当代码运行查询时,将字段“branch._id”更改为仅分支!然后没有记录返回...
对于这种行为,我需要制定一个解决方法,将结果映射到 Object,然后转换为 taskGroup class,这样查询就不会对属性名称进行任何修改,并且过滤器不会出现问题。
这是一个错误吗?还是它的正常行为?有什么解决方法可以避免在 id 字段时更改此属性名称?
附件
尝试使用branch.$id
之类的东西Criteria.where("branch" + "." + "$" + "id")
对于每个坚持这个问题的人,实际上没有解决这个问题的方法,在官方存储库上,维护者与我交谈,这是冻结的方式,要解决它,我将需要使用@DbRef ,但出于性能原因,大多数时候这不是一个可行的解决方案。
他们说将来有可能,因为他们正在努力增强 api 但目前还没有办法做到这一点。
增强问题是:enhancement issue
咨询的基础问题:base issue