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