unwind:(拆分)将数组中的每一个值拆分为单独的文档。

match:(筛选)用于对文档集合进行筛选,然后可以对筛选所得到的文档子集上做聚合

sort:(排序)根据任何字段进行排序,与在普通查询中的语法相同。

示例如下:

目标:对嵌套文档中数组进行拆分,并正序排序

如:

数据的结构为:

直接查询到的数据:

想要拆分为下图效果:

代码实现如下:

//  拆分数据(抽取方法)public JSONArray queryDocument(String productKey) {BasicDBObject query = new BasicDBObject();query.put("productKey", productKey);//拆分configContentArrayList<Document> documents = Lists.newArrayList();Document match = new Document();match.put("$match", query);Document unwind = new Document().append("$unwind", new Document().append("path", "$configModel").append("includeArrayIndex", "arrayIndex").append("preserveNullAndEmptyArrays", false));Document sort = new Document().append("$sort",new Document().append("arrayIndex",-1.0));documents.add(unwind);documents.add(match);documents.add(sort);AggregateIterable<Document> tslPart = mongoTemplate.getCollection(PROJECT_COLLECTION_NAME_FILE).aggregate(documents);//遍历得到documentfor (Document document : tslPart) {jsonArray.add(JSONUtil.parseObj(document.get("configModel")));}return jsonArray;}

java实现MongoDB中unwind与match用法相关推荐

  1. SpringBoot/Java 将MongoDB中的数据转换为json文件

    项目背景: 我最近在做SpringBoot的项目,其中数据库使用的是MongoDB,前端框架用的是layui.在我使用layui的数据表格组件时,其数据接口对应的是json文件,所有我得将MongoD ...

  2. java mysql insert_MySQL中INSERT的一般用法

    INSERT语句是最常见的SQL语句之一,但是MySQL中INSERT语句的用法和标准用法不尽相同,下文就为您详细介绍MySQL中INSERT的一般用法,供您参考. 1用法 在标准的SQL语句中,一次 ...

  3. java mongodb 多文档_如何通过Java在MongoDB中一次性插入多个文档

    我在我的应用程序中使用MongoDB,需要在MongoDB集合中插入多个文档. 我使用的版本是1.6 我在这里看到一个例子 在里面 批量插入多个文档部分 作者通过数组来做这件事. 当我尝试相同,但为什 ...

  4. java treeset subset_Java中TreeSet的详细用法

    第1部分 TreeSet介绍 TreeSet简介 TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.它继承于AbstractSet抽象类,实现了NavigableSet, Clonea ...

  5. java await signal_Java中的await()/signal()用法

    二.方法await()/signal() 在JDK5.0以后,JAVA提供了新的更加健壮的线程处理机制,包括了同步.锁定.线程池等等,可以实现更小粒度上的控制.await()和signal()就是其中 ...

  6. java class equals_Java中equals方法的用法

    一.Object类中的equals方法 所有类都从Object类中继承了equals方法. Object类中equals方法源代码如下: public boolean equals (Object o ...

  7. mongodb中unwind操作

    写入第一条数据 db.mytestcol.insert({user_id:"A_id",bonus:[{ type:"a" ,amount:1000 },{ t ...

  8. java存储protobuf_java中利用mongodb存储protobuf

    最近由于项目需要,大致研究了一下protobuf的java使用.说实话,习惯了C++的protobuf,java用起来真别扭. java在mongodb中的存储其实非常方便,假设有定义一个proto, ...

  9. MongoDB中的聚合管道($lookup多表关联查询、$unwind、$match、$project)

    MongoDB中的聚合管道($lookup多表关联查询.$unwind.$match.$project) 管道的概念 聚合框架 $lookup的功能及语法 主要功能 基本语法 例子 说明 $unwin ...

  10. java的switch_Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),  在java1.7 ...

最新文章

  1. hexo博客更新主题后上传Git操作
  2. 【原创翻译】文件与文件夹
  3. Autofac3 在MVC4中的运用原理
  4. 算法---------路径总和
  5. 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
  6. PDF课件下载!《用Python玩转数据》
  7. 翻译:打造Edge渲染内核的浏览器
  8. DLL入门浅析(1)——如何建立DLL
  9. xxl-job 执行结果是空_xxljob dotnet core executor执行器开源
  10. anti-wrinkle_anti-wrinkle cream是什么意思
  11. python循环读取文件越来越慢_python读取大文件越来越慢的原因与解决
  12. java trim 换行符_JAVA去掉字符串左右两边的回车、空格、制表符、换行符
  13. 如何在windows上搭建DZ(Discuz!)论坛?
  14. 北理珠大学生体质测试及健康状况的分析
  15. mac电脑双开微信的方法
  16. Google C++ 风格指南-转载自 http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/
  17. 每日一淘赋能产品经济全面发展
  18. 40个科研学术网站,收藏必备,予取予求!
  19. Python自动化办公练习——合并工作簿
  20. matlab磁场计算公式,利用MATLAB计算电磁场有关分布.doc

热门文章

  1. 这几款手机浏览器真的牛,比夸克更好用
  2. 条件变量之虚假唤醒 (Spurious wakeup)
  3. 基于算力驱动、数据与功能协同的分布式动态(协同)渲染/功能运行时
  4. 结构体数组和二维数组初始化和拷贝
  5. 《信任的速度》读书笔记
  6. 获取微信小程序具体链接
  7. java分支讵_Java实现简体字向繁体字的转换
  8. C语言 | 逻辑运算符
  9. 2068个开源的网站模板【免费下载】
  10. php网站 怎么查是否开源,怎么查看网站的开源程序?