java实现MongoDB中unwind与match用法
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用法相关推荐
- SpringBoot/Java 将MongoDB中的数据转换为json文件
项目背景: 我最近在做SpringBoot的项目,其中数据库使用的是MongoDB,前端框架用的是layui.在我使用layui的数据表格组件时,其数据接口对应的是json文件,所有我得将MongoD ...
- java mysql insert_MySQL中INSERT的一般用法
INSERT语句是最常见的SQL语句之一,但是MySQL中INSERT语句的用法和标准用法不尽相同,下文就为您详细介绍MySQL中INSERT的一般用法,供您参考. 1用法 在标准的SQL语句中,一次 ...
- java mongodb 多文档_如何通过Java在MongoDB中一次性插入多个文档
我在我的应用程序中使用MongoDB,需要在MongoDB集合中插入多个文档. 我使用的版本是1.6 我在这里看到一个例子 在里面 批量插入多个文档部分 作者通过数组来做这件事. 当我尝试相同,但为什 ...
- java treeset subset_Java中TreeSet的详细用法
第1部分 TreeSet介绍 TreeSet简介 TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.它继承于AbstractSet抽象类,实现了NavigableSet, Clonea ...
- java await signal_Java中的await()/signal()用法
二.方法await()/signal() 在JDK5.0以后,JAVA提供了新的更加健壮的线程处理机制,包括了同步.锁定.线程池等等,可以实现更小粒度上的控制.await()和signal()就是其中 ...
- java class equals_Java中equals方法的用法
一.Object类中的equals方法 所有类都从Object类中继承了equals方法. Object类中equals方法源代码如下: public boolean equals (Object o ...
- mongodb中unwind操作
写入第一条数据 db.mytestcol.insert({user_id:"A_id",bonus:[{ type:"a" ,amount:1000 },{ t ...
- java存储protobuf_java中利用mongodb存储protobuf
最近由于项目需要,大致研究了一下protobuf的java使用.说实话,习惯了C++的protobuf,java用起来真别扭. java在mongodb中的存储其实非常方便,假设有定义一个proto, ...
- MongoDB中的聚合管道($lookup多表关联查询、$unwind、$match、$project)
MongoDB中的聚合管道($lookup多表关联查询.$unwind.$match.$project) 管道的概念 聚合框架 $lookup的功能及语法 主要功能 基本语法 例子 说明 $unwin ...
- java的switch_Java中Switch用法代码示例
一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样), 在java1.7 ...
最新文章
- hexo博客更新主题后上传Git操作
- 【原创翻译】文件与文件夹
- Autofac3 在MVC4中的运用原理
- 算法---------路径总和
- 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
- PDF课件下载!《用Python玩转数据》
- 翻译:打造Edge渲染内核的浏览器
- DLL入门浅析(1)——如何建立DLL
- xxl-job 执行结果是空_xxljob dotnet core executor执行器开源
- anti-wrinkle_anti-wrinkle cream是什么意思
- python循环读取文件越来越慢_python读取大文件越来越慢的原因与解决
- java trim 换行符_JAVA去掉字符串左右两边的回车、空格、制表符、换行符
- 如何在windows上搭建DZ(Discuz!)论坛?
- 北理珠大学生体质测试及健康状况的分析
- mac电脑双开微信的方法
- Google C++ 风格指南-转载自 http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/
- 每日一淘赋能产品经济全面发展
- 40个科研学术网站,收藏必备,予取予求!
- Python自动化办公练习——合并工作簿
- matlab磁场计算公式,利用MATLAB计算电磁场有关分布.doc