Criteria findCriteria1 = Criteria.where("_id").is("1");
Criteria find2Criteria = Criteria.where("empName").elemMatch(Criteria.where("ID").is(1));
BasicQuery basicQuery = new BasicQuery(findCriteria1.getCriteriaObject(), find2Criteria.getCriteriaObject());
mongoTemplate.findOne(basicQuery, ClassName.class);
正在使用mongoTemplate查询,
{
"_id":"1",
"company":null,
"Address":null,
"empName":[{
"ID":1,
"Name":"test1"
}]
}
但我的结果如下所示,其他字段显示为空。
"_id":"1",
"company":"ABCD",
"Address":{
"Location":"XYZ"
},
"empName":[{
"ID":1,
"Name":"test1"
}]
我的预期结果应该是这样的,
Module#const_get
请帮我解决一下这个问题。
提前致谢,
答案 0 :(得分:1)
您可以使用以下代码。
您可以在Field
课程中链接所需的字段。
Criteria criteria = Criteria.where("_id").is("1");
Query query = new Query(criteria);
query.fields().elemMatch("empName", Criteria.where("ID").is(1)).include("company");
mongoTemplate.findOne(query , ClassName.class);
答案 1 :(得分:0)
请阅读Criteria和BasicQuery的文档。
本
中的第二个参数BasicQuery basicQuery = new BasicQuery(findCriteria1.getCriteriaObject(), find2Criteria.getCriteriaObject());
基本上是投影。即你告诉司机只提取那些提到的字段。因此,不提取其他字段,因此为空。
如果你想获取所有字段,这就是你应该做的事情
Criteria findCriteria1 = Criteria.where("_id").is("1");
Criteria find2Criteria = Criteria.where("empName").elemMatch(Criteria.where("ID").is(1));
BasicQuery basicQuery = new BasicQuery(findCriteria1.andOperator(find2Criteria).getCriteriaObject());