MongoDB和MongoTemplate对于嵌套数据的判空查询

news2024/11/16 20:53:52

在这里插入图片描述

前言:

不知道有没有和小名一样,接触MongDB时间不长的小伙伴。由于MongoDB是以文档形式存储数据的,所以其中的数据类型相对MySql或者Oracle关系型数据库丰富一些(MongoDB是NoSQL数据库这里比较不是很准确)

我们在关系型数据库中查询非空数据习以为常(例如:where id <> “”),但是到了MongoDB中出现了“数组”这种存储格式,而且,数组又存在一维数组和二维数组,当我们在需求中遇到“查询二维数组不为空”时,这就让一些不熟悉MongDB的小伙伴头痛了。

所以小名将平时用过的一些查询MongoDB中不为空的方法分享给大家,希望大家用得到:

文章目录

  • 一、MongoDB查询数组不为空
  • 二、示例
    • 1. MongoDB查询数组不为空
    • 2. MongoTemplate查询数组不为空

首先我们先来看MongoDB中的查询方式:

一、MongoDB查询数组不为空

  1. $elemMatch $ne
db.Collection.find({array:{$elemMatch:{$ne:null}}})
  1. $where
db.Collection.find({$where:"this.array.length>0"})
  1. $not $size
db.Collection.find({array: {$not: {$size: 0}}})
  1. ‘.’ 路径和 $exists
db.Collection.find({{'array.0': {$exists: 1}}})
  1. $exists $ne
db.Collection.find({ array: { $exists: true, $ne: [] } })
  1. $gt
db.Collection.find({ array: { $gt: [] } })

二、示例

我们先来看下数据结构

{
    "_id" : "1",
    "prodectList" : [ 
        {
            "prodectId" : "001",
            "prodectName" : "保温杯",
            "price" : "29.90",
            "salesChannelsList" : [ 
                {
                    "channel" : 0,
                    "price" : "0"
                }, 
                {
                    "channel" : 1,
                    "price" : "4.90"
                }, 
                {
                    "channel" : 2,
                    "price" : "0"
                }, 
            ]
        }
    ],
    "deleteFlg" : 0,
}

1. MongoDB查询数组不为空

MongoDB查询一维数组查询其中包含的值

db.getCollection('PHO_PRODECT').find({"salesChannelsList":{$elemMatch:{$eq:0}}})

MongoDB按条件查询嵌套数组

db.getCollection('PHO_PRODECT').find({"prodectList.salesChannelsList":{$elemMatch:{"channel":1,"price" : "4.90"}}})

MongoDB查询二维数组不为空

db.getCollection('PHO_PRODECT').find({"prodectList.salesChannelsList.0":{$exists:true}})

2. MongoTemplate查询数组不为空

MongoTemplate查询二维数组不为空

queryItem.addCriteria(Criteria.where("prodectList.salesChannelsList.length").gt(0));

MongoTemplate查询一维数组不为空

queryItem.addCriteria(Criteria.where("salesChannelsList.0").exists(true));

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

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

相关文章

Dropout方法原理和使用方法

来源&#xff1a;投稿 作者&#xff1a;梦飞翔 编辑&#xff1a;学姐 为什么提出这种方法&#xff1f; 神经网络在训练过程中&#xff0c;由于正负样本不均衡、样本特征显著性不足、训练参数不合适等原因会导致发生过拟合现象&#xff0c;即模型参数陷入局部最优&#xff0c;仅…

QT6操作连接mysql数据库方法_增删改查

QT6操作mysql方法_增删改查 mysql数据库搭建相关方法&#xff1a; MySQL - 随笔分类 - txwtech - 博客园https://www.cnblogs.com/txwtech/category/1973054.htmlMySQL解压版配置方法 MySQL解压版配置方法 - txwtech - 博客园1.下载 https://downloads.mysql.com/archives/co…

【知识学习】C++QT配置opencv遇到的坑

最近要搞图像&#xff0c;老师说尽量用C&#xff0c;就开始研究配置opencv 当然&#xff0c;说在前面&#xff0c;C的比python的要麻烦特别多&#xff0c;所以如果不是必要的话&#xff0c;建议用python pip配opencv吧 C麻烦就在于要自己在本地编译一遍才能跑&#xff0c;直接…

如何将亚马逊Seller Central 用到极致~

不论是新手卖家还是有经验的老手&#xff0c;亚马逊卖家中心都是一个可以帮助卖家发展业务的好工具&#xff0c;对于许多新手小白来说&#xff0c;亚马逊这样巨大的平台仍有许多功能与服务等着挖掘。 什么是亚马逊卖家中心&#xff1f; 亚马逊卖家中心是第三方卖家用来管理和…

微信支付-全面详解(学习总结---从入门到深化)

微信支付_产品介绍 微信支付介绍 微信支付&#xff08;https://pay.weixin.qq.com&#xff09;是腾讯集团旗下中国领先 的第三方支付平台&#xff0c;一直致力于为用户和企业提供安全、便捷、专业的在线支付服务。 付款码支付 付款码支付是指用户展示微信钱包内的“付款码”给商…

指纹浏览器是什么?可以用来解决网络爬虫的什么问题?

在大数据时代的今天&#xff0c;各行各业的许多企业多多少少都会因为涉及到海外市场需要收集大量的市场信息&#xff0c;特别是对于跨境电商领域的商家来说&#xff0c;网络爬虫是必不可少的。因此&#xff0c;一定有很多从业者接触过网络爬虫&#xff0c;但对于刚打算进入这个…

ADI Blackfin DSP处理器-BF533的开发详解36:图像处理专题-RGB888 转 RGB565(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 作为一个最高600M主频&#xff0c;单核或双核的定点DSP&#xff0c;做图像处理还是挺行的&#xff0c;属于是老本行&#xff0c;那么我…

广州蓝景分享—HTML+CSS功能,让页面加载速度提高数倍

Hello&#xff0c;各位小伙伴&#xff0c;今天跟大家分享前端技术干货&#xff0c;页面加载速度问题。 首先我们都讨厌加载缓慢的页面&#xff01; 要知道加载时间每增加1秒&#xff08;0-5秒之间&#xff09;&#xff0c;网站转化率就会平均下降4.42%。页面加载时间的前五秒…

linux 虚拟机nat模式网络配置

文章目录1. linux 版本&#xff1a;2. 下载地址 Index of /centos-store/7.6.1810/isos/x86_64/ (liu.se)3. 账号密码&#xff1a;root root4.选择nat 模式&#xff0c;勾选 将主机虚拟适配器连接到此网络&#xff0c;勾选 使用本地DHCP服务将iP地址分配给虚拟机5.点击Nat 设置…

数据仓库分享

前言 数据仓库&#xff0c;是为企业所有级别的决策制定过程&#xff0c;提供所有类型数据支持的战略集合。它出于分析性报告和决策支持的目的而创建的。 数据仓库是一个数据集合 数据仓库是一个为业务决策提供数据支持的数据集合 数据仓库是通过监控业务流程的形式为业务决策提…

Css不常用的方法

flex布局换行之后&#xff0c;下面一行的布局会异常 .homeItemBox{ display: flex; flex-wrap: wrap; justify-content: flex-start;} .homeItem{ display: flex; width: calc((100% - 20rpx) / 4); flex-direction: column; align-items: center; flex-shrink: 0; …

盘点系列:一度大热的TWS耳机今年表现如何?

根据Canalys最新市场研究数据显示&#xff0c;全球智能个人耳机市场在2022年Q3已连续第二个季度出现下滑&#xff0c;出货量同比下降4%至1.136亿台。 而TWS是唯一出现增长的子类别&#xff01; Q3真无线耳机TWS销量达7690万部&#xff0c;同比增长6%。苹果&#xff08;含beats&…

软件测试基础理论体系学习6-黑盒测试方法白盒测试方法简述

13 白盒测试方法1 黑盒测试1.1 黑盒测试概述1.2 黑盒测试的使用场景1.3 “黑盒”的两种基本方法1.4 黑盒测试的优缺点1.4.1 优点1.4.2 缺点1.5 黑盒测试的测试用例设计方法2 白盒测试2.1 白盒测试概述2.2 逻辑覆盖2.3 语句覆盖2.3.1 基本思想是2.3.2 优点2.3.3 缺点2.4 判定覆盖…

Python及其在数据科学中的应用

前言 Python及其在数据科学中的应用 Python易学&#xff0c;语法也比较简单。它是一种流行的数据科学语言&#xff0c;因为它功能强大且易于使用。Python是一种出色的数据分析语言&#xff0c;因为它包含各种数据结构、模块和工具。 使用Python进行数据科学的原因有很多&…

详细介绍NLP对话系统

任务型对话系统 任务型对话系统主要应用于固定领域。任务型对话的广泛应用的方法有两种&#xff0c;一种是模块法&#xff0c;另一种是端到端的方法。 模块法是将对话响应视为模块&#xff0c;每个模块负责特定的任务&#xff0c;并将处理结果传送给下一个模块。 端到端的任务…

分布式事务 - Seata - TCC模式

目录一、什么是TCC二、AT & TCC区别 及 适用场景三、代码集成示例3.1 升级Seata 1.5.23.2 示例场景说明3.3 TCC核心接口定义3.4 TCC相关阶段规划3.5 TCC核心代码四、TCC三大问题&#xff08;幂等、空回滚、悬挂&#xff09;之前介绍过分布式事务之Seata AT模式&#xff0c;…

智慧新零售异业联盟帮你搞定多店跨界整合,让你开启共富时代

大家好&#xff0c;我是林工&#xff0c;在如今的时代&#xff0c;不管你所看到的商业模式是什么样的&#xff0c;以不变应万变&#xff0c;目的只有一个&#xff0c;把买卖发展壮大&#xff0c;想要将买卖发展壮大&#xff0c;那就需要精准的吸粉引流获客方式和能力。 林工常常…

Fluent Mybatis 牛逼!

这玩意比ThreadLocal叼多了&#xff0c;吓得我赶紧分享出来。 推荐一些chrome浏览器必装的插件&#xff01; 40 个 SpringBoot 常用注解 VSCode 花式玩法&#xff08;摸鱼&#xff09;收藏一下 &#xff01; 使用fluent mybatis可以不用写具体的xml文件&#xff0c;通过jav…

【面试大全】互联网面试软实力【必看】

软实力 推荐大家使用Markdown语法写简历&#xff0c;然后再将Markdown格式转换为PDF格式后进行简历投递。如果你对Markdown语法不太了解的话&#xff0c;可以花半个小时简单看一下Markdown语法说明: http://www.markdown.cn/ 面试 假如你是网络申请者【拉勾、boss等】&…

Latex 分式格式处理

分式 分式命令&#xff1a;\frac{分子}{分母}。 对于行内短分式&#xff0c;可用斜线/输入&#xff0c;例如&#xff1a;(xy)/2 举例&#xff1a; 行内分式 \(\frac{xy}{yz} \) (显示为&#xff1a;) 行间分式 \[\frac{xy}{yz}\] (显示为&a…