Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
org.springframework.data.mongodb.InvalidMongoDbApiUsageException:您可以';t添加第二个';用户';标准查询已包含_Spring_Mongodb_Spring Mongo - Fatal编程技术网

org.springframework.data.mongodb.InvalidMongoDbApiUsageException:您可以';t添加第二个';用户';标准查询已包含

org.springframework.data.mongodb.InvalidMongoDbApiUsageException:您可以';t添加第二个';用户';标准查询已包含,spring,mongodb,spring-mongo,Spring,Mongodb,Spring Mongo,当我执行这段代码时,我得到的是org.springframework.data.mongodb.InvalidMongoDbApiUsageException:由于com.mongodb.BasicDocument的限制,您不能添加第二个“用户”条件。查询已包含“{”用户“:“5e269fad03f3c63845f5ca52”}” @Autowired MongoOperations mongoOperations; public List<UserTestDet

当我执行这段代码时,我得到的是
org.springframework.data.mongodb.InvalidMongoDbApiUsageException:由于com.mongodb.BasicDocument的限制,您不能添加第二个“用户”条件。查询已包含“{”用户“:“5e269fad03f3c63845f5ca52”}”

    @Autowired
    MongoOperations mongoOperations;
     public List<UserTestDetails> getAllLatestTestByCompletedStatus(List<String> patientIds, String status,String typeOfTest){
            Query query=new Query();
            List<Query> queryList=new ArrayList<>();
            List<UserTestDetails> userTestDetailsList=new ArrayList<>();
         for(String patientId: patientIds) {

             if (!StringUtils.isEmpty(patientId)) {
                 query.addCriteria(Criteria.where("user").is(patientId));
             }
             if (!StringUtils.isEmpty(status)) {
                 query.addCriteria(Criteria.where("status").is(status));
             }
             if (!StringUtils.isEmpty(typeOfTest)) {
                 query.addCriteria(Criteria.where("typeOfTest").is(typeOfTest));
             }
             queryList= Arrays.asList(query);

         }
            userTestDetailsList = mongoOperations.find(query.with(new Sort(Sort.Direction.DESC, "lastUpdated")), UserTestDetails.class);


            return userTestDetailsList;
        }
@Autowired
MongoOperations MongoOperations;
公共列表getAllLatestTestByCompletedStatus(列出患者、字符串状态、字符串类型测试){
查询=新查询();
List queryList=new ArrayList();
List userTestDetailsList=new ArrayList();
for(字符串patientId:patientIds){
如果(!StringUtils.isEmpty(patientId)){
query.addCriteria(Criteria.where(“user”).is(patientId));
}
如果(!StringUtils.isEmpty(状态)){
query.addCriteria(Criteria.where(“status”).is(status));
}
如果(!StringUtils.isEmpty(测试类型)){
query.addCriteria(Criteria.where(“typeOfTest”)是(typeOfTest));
}
queryList=Arrays.asList(查询);
}
userTestDetailsList=mongoOperations.find(query.with(新排序(Sort.Direction.DESC,“lastUpdated”)),UserTestDetails.class);
返回userTestDetailsList;
}
因为我刚开始接触mongo,所以我不知道自己哪里做错了


查询不能有两个相同的字段。相反,在操作符中使用
$,无需创建额外的
条件
。使用以下代码:

@Autowired
private MongoOperations mongoOperations;

public List<UserTestDetails> getAllLatestTestByCompletedStatus(List<String> patientIds, String status, String typeOfTest){
    Criteria criteria = new Criteria();
    if (!patientIds.isEmpty()) {
        criteria.and("user").in(patientIds);
    }
    if (StringUtils.isNotEmpty(status)) {
        criteria.and("status").is(status);
    }
    if (StringUtils.isNotEmpty(typeOfTest)) {
        criteria.and("typeOfTest").is(typeOfTest);
    }

    return mongoOperations.find(new Query(criteria).with(new Sort(Sort.Direction.DESC, "lastUpdated")), UserTestDetails.class);
}
@Autowired
私有MongoOperations MongoOperations;
公共列表getAllLatestTestByCompletedStatus(列出患者、字符串状态、字符串类型测试){
标准=新标准();
如果(!patientIds.isEmpty()){
(患者)中的标准和(“用户”);
}
if(StringUtils.isNotEmpty(状态)){
标准和(“状态”)为(状态);
}
if(StringUtils.isNotEmpty(typeOfTest)){
标准。和(“测试类型”)为(测试类型);
}
返回mongoOperations.find(新查询(条件).with(新排序(Sort.Direction.DESC,“lastUpdate”))、UserTestDetails.class);
}

when“”mongoOperations.find(新查询(条件)。with(新排序(Sort.Direction.DESC,“lastUpdate”)),UserTestDetails.class);“代码被执行它给出了不相关的数据。我的数据库包含100个已完成测试状态的遗传性癌症患者的记录,但我得到了不相关的数据集(超过200组记录)@mkc你能发布样本数据吗,可能你的数据库中有错误的数据(重复的患者等…),因为查询具有正确的条件当我交叉签入数据库时,只有100组数据,并且没有任何重复数据。当我签入日志时,它会提供重复的专利集。如果您不共享示例数据,我将无法帮助您。顺便说一句:运行此命令:(替换为您的集合名称)
db.UserTestDetails.aggregate([{$group:{$id:“$user”,count:{$sum:1}}},{$sort:{count:{count:-1}}}])
并检查是否有任何重复数据{“\uID”:DBRef(“jhi用户”,ObjectId(“5e1c64b203f3c65e229a54b9”),“count”:346},/*2*/{id:DBRef(“jhi用户”,ObjectId(“5E2E866103F308ED98B1FB”),“count”:313},