Spring MongoDB 条件:如何检查列表是否存在并包含具有特定值的对象?
Spring MongoDB Criteria: How to check that the List exists and contains object with specific value?
如何检查 List<Object>
是否存在并包含 class 的对象,其 partnerRole
字段值等于 "CREATOR"
和 companyId
字段值等于 "123"
?
文档 class:
@Document
public class ApplicationDocument {
List<PartnerDocument> partners = new ArrayList<>();
}
@Document
public class PartnerDocument {
private PartnerRole partnerRole;
private String companyId;
...
public enum PartnerRole {
UNKNOWN_ROLE,
CREATOR,
PARTICIPANT
}
}
我生成 Criteria
的 List
的方法。但这行不通,因为我指的是 partners
就好像它是一个 PartnerDocument
对象,但 partners
实际上是一个 List<PartnerDocument>
.
public List<Criteria> getCriteria(Partner.PartnerRole role, String companyId) {
List<Criteria> criteriaList = new ArrayList<>();
criteriaList.add(Criteria.where("partners").exists(true));
criteriaList.add(
Criteria.where("partners.partnerRole").in(role)
);
criteriaList.add(
Criteria.where("partners.partnerRole").in(companyId)
);
return criteriaList;
}
你的第二个条件有误。
Criteria.where("partners.partnerRole").in(companyId)
您正在根据 partnerRole 检查 companyId。
应该是
Criteria.where("partners.companyId").in(companyId)
如何检查 List<Object>
是否存在并包含 class 的对象,其 partnerRole
字段值等于 "CREATOR"
和 companyId
字段值等于 "123"
?
文档 class:
@Document
public class ApplicationDocument {
List<PartnerDocument> partners = new ArrayList<>();
}
@Document
public class PartnerDocument {
private PartnerRole partnerRole;
private String companyId;
...
public enum PartnerRole {
UNKNOWN_ROLE,
CREATOR,
PARTICIPANT
}
}
我生成 Criteria
的 List
的方法。但这行不通,因为我指的是 partners
就好像它是一个 PartnerDocument
对象,但 partners
实际上是一个 List<PartnerDocument>
.
public List<Criteria> getCriteria(Partner.PartnerRole role, String companyId) {
List<Criteria> criteriaList = new ArrayList<>();
criteriaList.add(Criteria.where("partners").exists(true));
criteriaList.add(
Criteria.where("partners.partnerRole").in(role)
);
criteriaList.add(
Criteria.where("partners.partnerRole").in(companyId)
);
return criteriaList;
}
你的第二个条件有误。
Criteria.where("partners.partnerRole").in(companyId)
您正在根据 partnerRole 检查 companyId。
应该是
Criteria.where("partners.companyId").in(companyId)