
在 Spring Data MongoDB 的 MongoTemplate 中,无需构造特殊 Criteria 即可查询集合中所有文档,直接使用空 Query 对象即可实现等效于 Mongosh 中 {} 的“匹配全部”语义。
在 spring data mongodb 的 mongotemplate 中,无需构造特殊 criteria 即可查询集合中所有文档,直接使用空 query 对象即可实现等效于 mongosh 中 `{}` 的“匹配全部”语义。
MongoTemplate 提供了简洁且语义清晰的方式匹配全部文档:直接使用无参构造的 Query 对象。这与 Mongosh 中传入空对象 {} 的行为完全一致——即不施加任何过滤条件,返回集合中所有文档。
✅ 正确用法如下:
List<hierarchy> hierarchies = mongoTemplate.find(new Query(), Hierarchy.class);</hierarchy>
该调用底层生成的 MongoDB 查询为 {},与 Mongosh 中 db.hierarchy.find({}) 完全等价,性能最优,语义最明确。
⚠️ 注意事项:
- ❌ 避免使用 Criteria.where("_id").exists(true) 等冗余写法——虽然 _id 字段在 MongoDB 中必然存在,但该表达式会引入不必要的 $exists 判断,降低可读性且无实际优势;
- ✅ new Query() 是官方推荐的标准方式,适用于 find()、count()、delete() 等所有支持 Query 参数的操作;
- ? 若需分页或限制结果数量,可在空 Query 基础上链式添加:
Query query = new Query().limit(100).skip(0); List<hierarchy> results = mongoTemplate.find(query, Hierarchy.class);</hierarchy>
总结:new Query() 是 MongoTemplate 中“匹配全部文档”的标准、高效、可读性强的首选方案,应作为默认实践替代任何变通写法。











