【MongoDB】$in和$eq操作数
在实际项目中,查询数据时,有以下两种条件我们经常会遇到:①查询参数是list类型,判断某个字段(String)是不是在这个list之中。②查询参数是一个String类型,判断这个参数是不是在某个字段(list)之中。详细地:
1、$in
针对条件①,比如某页面的列表筛选条件中有个所属项目的条件,是支持多选的,那么自然到后端是list类型的ids。或者类似的场景还有一些状态的条件。此时,对应的mongo操作数是in查询,如下。
public Pager<Topic> getTopicPageByIds(String teamId, List<String> ids, PageRequest pageRequest){return createQuery().where().in("_id", ids).eq("teamId", teamId).getPagedList(pageRequest.toPager(), clazz);}
关于$in,官方文档描述是:
The $in operator selects the documents where the value of a field equals any value in the specified array. 即,$in运算符会筛选出字段值等于指定数组中任何值的文档。
详见:https://docs.mongodb.com/manual/reference/operator/query/in/
注意:
$in的查询条件(指输入参数ids)是数组,但字段值(指表中字段)却不一定只能是数组中的值,也可以是数组。例如查询条件数组为["苹果", "西瓜"],字段值为苹果,则能匹配到该条数据(如上述例子)。但若字段值为["苹果", "梨子"],此时也能匹配到该条数据,因为苹果在["苹果", "西瓜"]之中。
2、$eq
针对条件②,比如有一个项目表,其中有个memberIds的字段,该字段用于存放参与该项目的所有成员。那么在项目列表中,我肯定只能查看到我参与的项目相关信息,而不能看到与我无关的项目。此时,对应的mongo操作数是eq查询,如下。
public Pager<Project> getProjectPage(String key, PageRequest pageRequest, String staffId){return createQuery().where().like("name", key).eq("memberIds", staffId).getPagedList(pageRequest.toPager(), clazz);}
关于$eq,官方文档描述是:
Specifies equality condition. The $eq operator matches documents where the value of a field equals the specified value.即,指定相等条件。$eq运算符将匹配字段值等于指定值的文档。
详见:https://docs.mongodb.com/manual/reference/operator/query/eq/
【MongoDB】$in和$eq操作数相关推荐
- 懒人数据库 MongoDB 5.x
MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂 ...
- 关于数据库或者任何语言代码中 LT,LE,EQ,NE,GE,GT 的含义
LT,LE,EQ,NE,GE,GT分别表示什么经常有人混淆,现如下解释: lt:less than 小于 le:less than or equal to 小于等于 eq:equal to 等于 ne ...
- PyTorch 笔记(08)— Tensor 比较运算(torch.gt、lt、ge、le、eq、ne、torch.topk、torch.sort、torch.max、torch.min)
1. 常用函数 比较函数中有一些是逐元素比较,操作类似逐元素操作,还有一些类似归并操作,常用的比较函数如下表所示. 表中第一行的比较操作已经实现了运算符重载,因此可以使用 a>=b,a>b ...
- pushpop指令的操作数必须是字操作数_指令格式
按指令字长度分类 指令字长:整个指令的长度,与机器字长没有固定关系.通常把指令字长 = 机器字长的指令称为单字长指令,同理还有半字长指令和双字长指令. 在一个指令系统(指令集:ARM,x86)中,若所 ...
- mongodb常用语句以及SpringBoot中使用mongodb
普通查询 某个字段匹配数组内的元素数量的,假如region只有一个元素的 db.getCollection('map').find({region:{$size:1}}) 假如region只有0个元素 ...
- -lt -gt -ge -le -eq的意义
脚本如下: #!/bin/bash x=0 while [ $x -lt 10 ] do echo $x x=`echo "$x+1" | bc` done 请问这里的-lt是什么 ...
- JVM---虚拟机栈(操作数栈)
虚拟机栈-操作数栈 概念 操作数栈:Operand Stack 每一个独立的栈帧除了包含局部变量表以外,还包含一个后进先出的操作数栈,也可以称之为 表达式栈(Expression Stack); 操作 ...
- php gt lte gte,springdata jpa封装数据库关键字(EQ, LIKE, GT, LT, GTE, LTE,IN)
数据库关键字申明,类SearchFilter: /*************************************************************************** ...
- EQ设置的基础知识(音乐爱好者必知)
2019独角兽企业重金招聘Python工程师标准>>> EQ设置 0,200,1K,3K,14K分别代表了 1:低频量(决定低音多少,少了则没有低频,多了则有轰轰声) 2:中低频,( ...
最新文章
- 三星教父逝世!李健熙缔造的商业传奇和争议人生
- boost::type_erasure::dereferenceable相关的测试程序
- Kogito,ergo规则—第2部分:规则的全面执行模型
- 数据分析工具篇pyspark应用详解——Pyspark实现PCA主成分
- python!!!!惊了,这世上居然还有这么神奇的东西存在
- 项目管理思考——我适合做项目经理吗
- [Android]安装 Android Studio 第一行Android代码
- 图论:柯尼斯堡桥问题、艾科西亚游戏
- 对10亿个数据去重java_JAVA 8 新特性
- 如何使用python计算2个毫秒级字符串的计算
- HttpClient那些事儿
- Win10离线 安装.net frame3.5
- Win10 迅雷9精简优化设置方法
- 数据分析:单元3 图像的手绘效果实现
- 正确地使用“respectively“
- java开发专用英语,JAVA开发常用英语词汇
- 将windows里的内容直接复制粘贴到ubuntu,提高效率
- 绘王DWH69智能数位板,你听说了吗?
- 你对MySQL中的索引了解多少?
- linux+ros2 launch文件开机自启动
热门文章
- 如何玩转AI时代下的新零售,创新奇智新零售聚智沙龙给你答案...
- Spring知识总结
- 【Spark】RDD(Resilient Distributed Dataset)究竟是什么?
- PEAR教程1.Pear的介绍和安装
- 不知道抖音怎么赚钱?我来告诉你做短视频真实收入
- OpenWrt软路由空间扩容
- 如何用栈实现深度优先算法-C语言解决迷宫问题
- python github 12306 文贤平_开源的12306抢票神器,GitHub标星1.5万
- maya2014安装之后出现log4cplus错误修复
- 咸鱼Maya笔记—NURBS倒角Plus