首页 > 解决方案 > 根据 mongo db 中的字符串列表过滤字符串

问题描述

尝试使用针对字符串列表的字符串字段过滤集合。

public List<Case> getCases(List<String> doctorIds) {

 Query query = new Query();
 query.addCriteria(Criteria.where("primaryDoctorId").in(doctorIds));
 return mongoTemplate.find(query, Case.class);

} 

过滤mongo类

public class Case {

   private String primaryDoctorId;

    public String getPrimaryDoctorId() {
    return primaryDoctorId;
   }

   public void setPrimaryDoctorId(String primaryDoctorId) {
    this.primaryDoctorId = primaryDoctorId;
  }

}

但这并没有按预期工作,即使有符合此标准的记录。

标签: javamongodbmongodb-query

解决方案


您可以尝试使用BasicDBObjectBasicDBList构建查询过滤器

public List < Case > getCases(List < String > doctorIds) {
    BasicDBList docIds = new BasicDBList();
    docIds.addAll(doctorIds);
    DBObject inClause = new BasicDBObject("$in", docIds);
    DBObject query = new BasicDBObject("primaryDoctorId", inClause);

    MongoCursor < Document > cursor = collection.find(query).iterator();
    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();

    }
}

推荐阅读