java - Spring MongoDB 标准:如何检查列表是否存在并包含具有特定 value 的对象?

如何检查 List<Object> 是否存在并包含其 partnerRole 字段 value 等于 "CREATOR"companyId 字段 value 等于 "123" 的类对象?

文档类:

@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
  }
}

我生成 CriteriaList 的方法。但这不起作用,因为我指的是 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;
  }

回答1

你的第二个标准有错误。

Criteria.where("partners.partnerRole").in(companyId)

您正在对照 partnerRole 检查 companyId。

它应该是

Criteria.where("partners.companyId").in(companyId)

相似文章

java - 连接MongoDB

早上好。我在连接到MongoDB数据库时遇到问题。我在docker-compose.yml文件中为自己配置了一个数据库和mongoexpress。使用CommandLineRunner,我想将示例数据...

最新文章