monogoTemplate 将 JSON{key1: 1, key2:2, key3:[{},{}{}]} 中key3 中的数组元素提取出来作为新的文档

问题描述

monogoTemplate 将 JSON{key1: 1, key2:2, key3:[{},{}{}]} 中key3 中的数组元素提取出来作为新的文档

// 创建聚合操作
Aggregation agg = Aggregation.newAggregation(Aggregation.match(Criteria.where("YOUR_FILTER_FIELD").is(YOUR_VALUE)), // 过滤条件Aggregation.unwind("key3"), // 展开key3数组Aggregation.replaceRoot("$key3") // 设置key3数组中的每个对象为新的文档根
);
// 执行聚合查询
AggregationResults<Class_Name> results = mongoTemplate.aggregate(agg, "COLLECTION_NAME", Class_Name.class);
// 获取查询结果
List<Class_Name> extractedDocuments = results.getMappedResults();

增加分页

int pageNo = 1; // 查询第一页
int pageSize = 10; // 假设每页显示10个文档
Aggregation agg = Aggregation.newAggregation(Aggregation.match(Criteria.where("YOUR_FILTER_FIELD").is(YOUR_VALUE)), // 过滤条件Aggregation.unwind("key3"), // 展开key3数组Aggregation.replaceRoot("$key3"), // 设置key3数组中的每个对象为新的文档根Aggregation.skip((pageNo - 1) * pageSize), // 跳过之前页面的文档Aggregation.limit(pageSize) // 限制本页面返回的文档数量
);
// 执行聚合查询
AggregationResults<Class_Name> results = mongoTemplate.aggregate(agg, "COLLECTION_NAME", Class_Name.class);
// 获取分页后的查询结果
List<Class_Name> pagedDocuments = results.getMappedResults();

动态添加查询条件

List<AggregationOperation> operations = new ArrayList<>();
// 添加基础条件
operations.add(Aggregation.match(Criteria.where("YOUR_FILTER_FIELD").is(YOUR_VALUE)));
operations.add(Aggregation.unwind("key3"));
operations.add(Aggregation.replaceRoot("$key3"));
// 根据需要添加更多的条件
if (需要添加额外的条件) {operations.add(Aggregation.match(额外的Criteria));
}
// 添加分页
int pageNo= 1; // 页码
int pageSize = 10; // 每页数量
operations.add(Aggregation.skip((pageNumber - 1) * pageSize));
operations.add(Aggregation.limit(pageSize));
// 通过列表创建聚合对象
Aggregation agg = Aggregation.newAggregation(operations);
// 执行聚合查询
AggregationResults<Class_Name> results = mongoTemplate.aggregate(agg, "COLLECTION_NAME", Class_Name.class);
// 获取结果
List<Class_Name> pagedDocuments = results.getMappedResults();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《黑神话:悟空》现已正式上架PS商城,今晚或有大动作

关于《黑神话&#xff1a;悟空》的消息可谓是喜闻乐见&#xff01;今天晚上19:10可能会有相关游戏内容放出&#xff0c;让人非常期待。而海信电视推出的《黑神话&#xff1a;悟空》专属画质模式&#xff0c;让玩家可以享受到更加细腻的游戏画面。 此外&#xff0c;海信和《黑神…

高级感拉满的个人UI网页

效果图 PC端 移动端 部分代码 index.html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Zboy的主页</title><link rel"stylesheet" href"css/normalize.css" /><link rel&qu…

SAP项目任务一览表

根据SAP Activate项目管理方法论的主要精神&#xff0c;浓缩到一些主要的团队和任务。 主要的团队有&#xff1a; 项目管理(办公室)Project Management(office)&#xff1a;项目经理团队&#xff0c;包括项目办公室。负责项目整体运行和监控&#xff0c;项目办公室负责项目的…

李沐-19 卷积层【动手学深度学习v2】

记录下关于权重下标变换的理解&#xff1a; 从原来的Wi,j到Wi,j,k,l是从二维到四维的过程&#xff0c;如下图所示 对全连接层使用平移不变性(如&#xff1a;卷积核在移动过程是不变的)和局部性&#xff08;如&#xff1a;卷积核有一定大小&#xff09;得到卷积层&#xff0c;这…

【leetcode】双指针算法技巧——滑动窗口

标题&#xff1a;【leetcode】双指针算法技巧——滑动窗口 水墨不写bug 正文开始&#xff1a; 滑动窗口介绍 滑动窗口是一种常用的算法技巧&#xff0c;用于解决一些涉及 连续子数组或子串 的问题。它的基本思想是 维护一个窗口&#xff0c;通过 在窗口内移动 来寻找满…

超融合未来前景

超融合其实就是一种私有云的实现方式&#xff0c;但是又把私有云技术实现系统化&#xff0c;标准化&#xff0c;轻便化。 云化的目的我们为了实现对硬件更好的利用&#xff0c;同时让上层应用不感知颗粒化的、规模性的硬件&#xff0c;同时实现我们的多组服务高可用化&#xf…

如何查询RGB图像的三维numpy数组中有多少个不同的RGB点,并打印具体数值?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

xgplayer插件的使用-西瓜播放器 ---- Vue3中使用

xgplayer 视频 一、xgplayer官网 xgplayer官网 - 点我进入 一、xgplayer简单介绍 西瓜播放器是字节跳动推出的一款播放器。 稳定性好&#xff08;大厂&#xff08;字节跳动&#xff09;出品&#xff09;&#xff1b;插件方便实用且简洁高雅&#xff1b;官网文档清晰&#xff1b…

bev算法 简介

Birds Eye View&#xff1a;将车辆周围的场景从车辆俯视图的角度呈现出来 优势 帮助理解周围环境并进行决策。 原理 传感器数据获取 数据预处理 雷达点云 去噪&#xff1a;去除点云数据中的噪声点&#xff0c;例如使用统计滤波器、体素滤波器等方法。 下采样&#xff1a…

java基础语法(19)| 线程

前言 Hello&#xff0c;大家好&#xff01;很开心与你们在这里相遇&#xff0c;我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩&#xff0c;想与你们共同学习、探索关于IT的相关知识&#xff0c;希望我们可以一路陪伴~ 1. 多线程概述 并发与并行 什么是并发 …

新校区不建了!大学城,烂尾!

近日&#xff0c;《环球时报》援引台湾《联合报》报道&#xff0c;台湾地区各县市早年曾掀起“大学城风潮”&#xff0c;争相圈地让大学设立分校。但多年过去了&#xff0c;不少大学城沦为荒芜之地。 报道中称&#xff0c;上世纪90年代&#xff0c;由于校地、建筑面积是大学升…

[Linux - C] 自主Shell

[Linux - C] 自主Shell [Linux - C语言] 自主Shell逻辑策划 main()打印命令行 void MakeCommandLineAndPrint()用户名 USER主机名 HOSTNAME当前目录 PWDSkipPath 切割目录打印命令行 获取用户字符串 int GetUserCommand()检查重定向 void CheckRedir()切割字符 void SplitComma…

数据加密、文档加密为什么都选择安企神软件

数据加密、文档加密为什么都选择安企神软件 免费试用安企神 在数据加密和文件加密领域&#xff0c;有众多优秀的软件&#xff0c;他们功能各异、价格不同、效果也大相径庭&#xff0c;经过对比使用、用户口碑和技术网站评判&#xff0c;安企神在各方面都稳坐第一把交易。其原…

Swift中的循环语句

在Swift中&#xff0c;循环语句用于重复执行一段代码块。Swift提供了几种不同的循环语句&#xff0c;包括for-in循环、while循环和repeat-while循环。 for-in循环&#xff1a; for-in循环用于遍历一个集合&#xff08;如数组或范围&#xff09;中的每一个元素。语法如下&#…

洛谷P4913 二叉树深度

【洛谷P4913 深基16.例3】二叉树深度 文章目录 【洛谷P4913 深基16.例3】二叉树深度题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 正确代码 题目描述 有一个 n ( n ≤ 1 0 6 ) n(n \le 10^6) n(n≤106) 个结点的二叉树。给出每个结点的两个子结点编号&#xff08;…

新闻媒体行业邮件推广:精准推送,创造价值

在当今信息爆炸的时代&#xff0c;新闻行业如何在竞争激烈的市场中脱颖而出&#xff0c;吸引读者的目光&#xff0c;成为了每个新闻机构都需要认真思考的问题。许可式邮件营销成为了一种强大的工具&#xff0c;不仅能够向订阅者发送新闻期刊&#xff0c;还能够向广告商发送宣传…

Leetcode 4.16

1.找两个和为目标值且不重叠的子数组 找两个和为目标值且不重叠的子数组 初始化变量: sum&#xff1a;用于存储当前左边界 l 到右边界 r 之间的子数组和。r&#xff1a;初始化为数组的最后一个元素的索引&#xff0c;表示初始的右边界。ans&#xff1a;用于存储最小的两个子数…

【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验(下)【北京航空航天大学】

本次实验&#xff08;上&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验&#xff08;上&#xff09;【北京航空航天大学】 本次实验&#xff08;中&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实…

LLamaSharp加载llama.cpp转化好的模型

新建.net8控制台项目 安装依赖包 LLamaSharp和LLamaSharp.Backend.Cpu 准备好转化好的模型 没有的话参考这篇文章https://blog.csdn.net/qq_36437991/article/details/137248622 编写代码 using LLama; using LLama.Common; using LLama.Native;namespace llamasharpstu…

php 如何获取用户在当前页面的停留时间

php 如何获取用户在当前页面的停留时间 要获取用户在当前页面的停留时间&#xff0c;你可以使用PHP结合JavaScript来实现。下面是一种可能的方法&#xff1a; 在页面加载时&#xff0c;使用JavaScript记录当前时间。 <script> var startTime new Date().getTime()…