假设我有一个实体类Article

@Data

@Document(collection = "articles")

public final class Article {

@Id

private String id;

private String name;

private String url;

private String author;

private List comments;

}

实体类Comment

@Data

public final class Comment {

private String userId;

private String content;

}

已经通过测试用例添加进去几条数据,假设其中一个Article的_id为5b5694f38ec9b636c4e52d69,

可以通过MongoRepository获取到这个id的Article,也可以通过MongoTemplate获取,

final String id = "5b5694f38ec9b636c4e52d69";

Query query = new Query()

.addCriteria(Criteria.where("id").is(id));

Article article = mongoTemplate.findOne(query, Article.class);

这样可以获取到,现在我想只获取这个Article的List,

Document queryObject = new Document();

queryObject.put("id", id);

Document fieldsObject = new Document();

fieldsObject.put("id", false);

fieldsObject.put("comments", true);

Query query = new BasicQuery(queryObject, fieldsObject);

如果我find时返回List

List comments = mongoTemplate.findOne(query, List.class);

这样毫无疑问会出现异常,返回Article

Article article = mongoTemplate.findOne(query, Article.class);

List comments = Optional.of(article).orElseThrow(ArticleNotFoundException::new)

.getComments();

这样可以获取List,但是这样的获取意义不是很大,也无法获取指定数量的Commit(subList()也没有什么意义)。

有没有什么方式直接返回List呢,这样便可以使用limit()和skip();

如果没有,那有没有一种方式可以实现limit() skip()同样的效果?

java匹配字段返回成功,Java MongoTemplate查询返回指定字段及指定数量的数据相关推荐

  1. 解决命令行下java编译javac不成功java和java -version可以成功的三种解决方案

    最近在cmd命令行下javac编译java文件不成功,但是输入java和java -version没问题 在CSDN看了一下午各路大神的回答,自己总结一下三个解决方法: 1.如果cmd下输入java或 ...

  2. 分析输入url到页面返回的过程(查询返回过程)

    最近看到一个题目,是当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 这个问题之前.最近.我想以后肯定还会被问到,或者问到这样的题目, ...

  3. MySQL简单命令和SELECT查询,给字段起别名【MySQL数据库】

    Java养成计划----学习打卡第六十四天 内容导航 数据库的相关操作 数据库的导入 查看导入数据库中的表 查看表中的数据 查看表的基本结构[简化] 查看表的结构[详细] 查看mysql数据库的版本号 ...

  4. [Elasticsearch2.x] 多字段搜索 (三) - multi_match查询和多数字段 译

    multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据 ...

  5. Elasticsearch多字段搜索 - multi_match查询和多数字段-----multi_match查询

    multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. best_fields,most_fields以及cross_fields. 默认情况下,该查询以best_fields类 ...

  6. sql--sqlsever--时间相关SQL语句--查询当前时间至前N天的数据

    sql–sqlsever–时间相关SQL语句–查询当前时间至前N天的数据 . . . sql server:取当前时间前10分钟之内的数据 dateadd() 当前时间 select GETDATE( ...

  7. java search 不能使用方法_java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段...

    我试图使用TERMS QUERY从索引查询字母数字值,但它没有给我输出. 查询: { "size" : 10000, "query" : { "boo ...

  8. java mysql查询字段换行,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  9. oracle 代码 字段映射,将ORACLE TIMESTAMP(9)字段映射到java.util.Date

    存在将ORACLE TIMESTAMP(9)字段映射到Java中的java.sql.Timestamp或java.util.Date的问题 ojdbc 11.2.0.1. 0 休眠的注解3.3.1.G ...

最新文章

  1. Windows Mobile下使用ZLIB压缩
  2. Kubuntu 9.10设置支持文件分级的方法
  3. 怎么在python下载网站内容-python从网站上下载东西
  4. JVM 监控以及内存分析
  5. 神经网络变学习率算法代码_机器学习算法之神经网络
  6. Devops-运维效率之数据迁移自动化
  7. 同为Chromium浏览器,Edge却被“特别关照”
  8. 8051 管脚定义_8051微控制器的引脚说明
  9. 前端开发学习Day4
  10. python全栈开发基础【补充】包的补充
  11. 队列的基础知识及实现方法
  12. 超宽屏幕比例_显示器屏幕比例与分辨率对照表
  13. Oracle全局临时表和私有临时表
  14. 《静态时序分析实用方法》第三章翻译
  15. 你知道各调的特点吗?
  16. Unity手游性能测评报告——MOBA篇
  17. 前端基础知识点-每天一个基本知识点(100+个前端小知识,你是否都知道?)
  18. Double的compareTo
  19. C#语句1:选择语句一(if else )
  20. 前端图片 - icon Fonts

热门文章

  1. 五层协议网络体系结构的要点及主要任务
  2. 到底是上班舒服还是上学舒服!上班一个月的感受!
  3. Brat文本注释工具的使用文档
  4. 定时器Timer使用
  5. JS 中常见的转义字符串
  6. 如何将xlsx表格文件转换成txt文件?
  7. 模型高性能优化 | 两步数据预处理让Alphafold 提速一倍
  8. 修改手机开机Logo界面(Redmi Note 7)
  9. 设计模式讲解与代码实践(三)——工厂方法
  10. Python实现梯度下降