Java MongoTemplate实现MongoDB按条件查询返回指定字段
MongoDB指定返回字段的实现方案
你当前编写的查询未配置投影规则,默认会返回匹配文档的全部字段,要实现仅返回collection_billId的效果,只需在Query对象上添加投影配置即可。
对应Java代码
场景1:collection_billId是集合根级字段(与Collection字段同层级)
Query query = new Query(); // 拼接查询条件 query.addCriteria(Criteria.where("Collection.collection_billDate").is("test")); // 配置返回字段规则 query.fields() .include("collection_billId") // 仅返回collection_billId .exclude("_id"); // MongoDB默认返回_id字段,不需要可加这行排除,需要则删除 List<BAN> banList = mongoTemplate.find(query, BAN.class, CollectionName);
场景2:collection_billId是Collection嵌套对象下的字段
如果collection_billId和collection_billDate同属Collection嵌套结构,只需调整投影的字段路径即可:
Query query = new Query(); query.addCriteria(Criteria.where("Collection.collection_billDate").is("test")); query.fields() .include("Collection.collection_billId") .exclude("_id"); List<BAN> banList = mongoTemplate.find(query, BAN.class, CollectionName);
规则说明
- 投影配置中调用
include()指定需要返回的字段后,除默认自带的_id外,其余未指定的字段都不会返回 - 嵌套字段的路径规则和查询条件的路径规则完全一致,必须和MongoDB中实际存储的文档结构匹配
- 如果你使用的
BAN实体类做了字段映射,要保证投影里写的字段名和映射后的MongoDB字段名一致,否则会取不到值
内容的提问来源于stack exchange,提问作者SorinS
相关产品推荐
相关产品推荐

