• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

指定春季蒙戈DB查询字段预测

json 来源:Vbr 6次浏览
{ 
    "_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()); 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)