指定春季蒙戈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

回到顶部