使用 Spring 数据 MongoDB 中的 MongoTemplate 进行查找查询时仅投影某些字段?
Project only certain fields when using MongoTemplate from Spring Data MongoDB for a find query?
我想知道,如果可能的话,我如何使用 mongoTemplate
而不是 return 整个文档来执行 Spring 数据 MongoDB 的查找查询?使用来自 MongoDB 的“本地”Java 同步驱动程序,我可以这样做:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
这样 document
只包含“字段”,没有其他内容。
我怎样才能对 mongoTemplate
做同样的事情,因为在使用 mongoTemplate.findOne(..)
时我似乎找不到类似于 projection
的东西。您是否需要使用聚合管道与 mongoTemplate
一起执行此操作?
我正在使用 Spring Data MongoDB 版本 3.0.1.RELEASE(spring boot 2.3.3)。
您可以在查询中使用 include()
或 exclude()
选项。
例如:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);
我想知道,如果可能的话,我如何使用 mongoTemplate
而不是 return 整个文档来执行 Spring 数据 MongoDB 的查找查询?使用来自 MongoDB 的“本地”Java 同步驱动程序,我可以这样做:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
这样 document
只包含“字段”,没有其他内容。
我怎样才能对 mongoTemplate
做同样的事情,因为在使用 mongoTemplate.findOne(..)
时我似乎找不到类似于 projection
的东西。您是否需要使用聚合管道与 mongoTemplate
一起执行此操作?
我正在使用 Spring Data MongoDB 版本 3.0.1.RELEASE(spring boot 2.3.3)。
您可以在查询中使用 include()
或 exclude()
选项。
例如:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);