天天看点

MongoTemplate查询返回指定字段

问题

最近在项目中使用了MongoDB,遇到一个问题是如何查询返回指定的字段

百度和谷歌中文搜索了各种答案没一个靠谱的

就说说百度上流传最广的一个互相抄袭的博客内容是这么写的

QueryBuilder queryBuilder = new QueryBuilder(); 
       queryBuilder.or(new BasicDBObject("onumber", "002"), new BasicDBObject("cname","zcy1")); 
       BasicDBObject fieldsObject=new BasicDBObject();
       fieldsObject.put("onumber", 1);
       fieldsObject.put("cname", 1);
       Query query=new BasicQuery(queryBuilder.get(),fieldsObject);
           

这个答案显然已经不合时宜,现在BasicQuery已经不能这样构造了。

解决

最后还是在StackOverflow搜到了准确答案。

Query query = new Query();
		query.fields().include("path"); //包含该字段
		query.fields().exclude("salary");//不包含该字段
           

参考

https://stackoverflow.com/questions/32108953/how-to-return-only-specific-fields-for-a-query-in-spring-data-mongodb

https://stackoverflow.com/questions/16739210/spring-data-mongo-query-field-parameters

https://docs.spring.io/spring-data/mongodb/docs/2.1.6.RELEASE/reference/html/#mongodb-getting-started