在MongoRepository JAVA SpringBoot中如何基于子映射中的键获取父对象
这就是我的对象的外观在MongoRepository JAVA SpringBoot中如何基于子映射中的键获取父对象,java,mongodb,spring-boot,mongodb-query,Java,Mongodb,Spring Boot,Mongodb Query,这就是我的对象的外观 @Document("parent") public class Parent { @Id private String id; private String field-1; private Map<String,Long> someMap; } { "_id" : "parent-id", "field-1" : "some value", "someMap" : { "categ
@Document("parent")
public class Parent {
@Id
private String id;
private String field-1;
private Map<String,Long> someMap;
}
{
"_id" : "parent-id",
"field-1" : "some value",
"someMap" : {
"category-5" : 123,
"category-4" : 456
}
}
此方法返回预期结果package com.somepackage.services;
package com.somepackage.services;
import org.springframework.stereotype.Service;
import java.util.List;
import com.yourpackagestructure.Parent;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@Service
public class Service{
private MongoTemplate mongoTemplate;
public Service(MongoTemplate mongoTemplate){
this.mongoTemplate = mongoTemplate;
}
public List<Parent> getParentList(String mapKey){
Query query = new Query();
query.addCriteria(Criteria.where("someMap." + mapKey).exists(true));
List<Parent> parents = mongoTemplate.find(query,Parent.class);
}
}
导入org.springframework.stereotype.Service;
导入java.util.List;
导入com.yourpackagestructure.Parent;
导入org.springframework.data.mongodb.core.MongoTemplate;
导入org.springframework.data.mongodb.core.query.Criteria;
导入org.springframework.data.mongodb.core.query.query;
@服务
公务舱服务{
私有MongoTemplate MongoTemplate;
公共服务(MongoTemplate MongoTemplate){
this.mongoTemplate=mongoTemplate;
}
公共列表getParentList(字符串映射键){
查询=新查询();
query.addCriteria(Criteria.where(“someMap.”+mapKey).exists(true));
List parents=mongoTemplate.find(查询,Parent.class);
}
}
您看到这个了吗?这是你想要实现的吗?是的,它是相关的,但它是以映射的形式获取某个映射内的元素列表。我想要的是基于该对象内某个映射内的键的完整父对象
db.getCollection('parentCollection').find({"someMap.category-4" : {$exists:true}})
package com.somepackage.services;
import org.springframework.stereotype.Service;
import java.util.List;
import com.yourpackagestructure.Parent;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@Service
public class Service{
private MongoTemplate mongoTemplate;
public Service(MongoTemplate mongoTemplate){
this.mongoTemplate = mongoTemplate;
}
public List<Parent> getParentList(String mapKey){
Query query = new Query();
query.addCriteria(Criteria.where("someMap." + mapKey).exists(true));
List<Parent> parents = mongoTemplate.find(query,Parent.class);
}
}