指定春季蒙戈DB查询字段预测
{ "_id":"1",
"company":"ABCD",
"Address":{
"Location":"XYZ"
},
"empName":[{
"ID":1,
"Name":"test1"
},
"ID":2,
"Name":"test2"
},
"ID":3,
"Name":"test3"
}]
}
现在用mongoTemplate查询,指定春季蒙戈DB查询字段预测
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);
,但我的结果,如下面等领域显示为空。
{ "_id":"1",
"company":null,
"Address":null,
"empName":[{
"ID":1,
"Name":"test1"
}]
}
我预期的结果应该是这样的,
"_id":"1", "company":"ABCD",
"Address":{
"Location":"XYZ"
},
"empName":[{
"ID":1,
"Name":"test1"
}]
能否请你帮我解决这个问题。
由于提前,
回答:
务必阅读为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());
回答:
您可以使用下面的代码做什么。
您可以链接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);
以上是 指定春季蒙戈DB查询字段预测 的全部内容, 来源链接: utcz.com/qa/262385.html