Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mongoDB 逻辑运算符

mongoDB 逻辑运算符

作者头像
Leshami
发布于 2018-08-08 09:56:14
发布于 2018-08-08 09:56:14
1.5K00
代码可运行
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界
运行总次数:0
代码可运行

在mongoDB中,逻辑运算也是较为常用的运算,这些逻辑运算通常包含与或非,取反,存在等等。本文描述mongoDB几类常用的逻辑运算符同时给出演示示例,供大家参考。

一、mongoDB中的几种逻辑运算符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $or       逻辑或
    $and      逻辑与
    $not      逻辑非
    $nor      逻辑or的取反
    $exists   存在逻辑
    $type     查询键的数据类型

二、演示逻辑运算

演示集合persons中用到的文档数据请参考:mongoDB 比较运算符

1. $or

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } 

    db.persons.find( {$or : [{age:25},{email:"robinson.cheng@qq.com"}]})  //不同的键基于$or操作符的查询
    db.persons.find( {$or:[{age:25},{age:{$eq:27}}]})                     //相同的键基于$or操作符的查询
    db.persons.find( {age: {$in : [25,27]}})     //对于相同键的$or查询建议使用$in替换,如本查询替换上面的查询   

2. $and

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }

    db.persons.find( {$and: [{age:{$gt:25}},{age:{$lt:30}}]})
    db.persons.find( {$and: [{age:{$gt:25}},{"score.c":75}]})        //嵌套文档作为$and查询条件        
    db.persons.find( {$and: [{age:{$gt:25}},{books:"MONGODB"}]})     //数组作为$and查询条件 

3. $not

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { field: { $not: { <operator-expression> } } }     

db.persons.find( { age: {$not : { $gt : 25 } } } )  //查询年龄不大于25对文档       

4. $nor

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { $nor: [ { <expression1> }, { <expression2> }, ...  { <expressionN> } ] }         

db.persons.find( {$nor : [ {age: { $gt : 25 } } ] } )                        //单个条件的$nor    
db.persons.find( {$nor : [ {age: { $gt : 25 } },{ books : "MONGODB" } ] } )  //查找age不大于25,并且书籍不包含MONGODB的文档
db.persons.find( {$or : [ {age: { $gt : 25 } },{ books : "MONGODB" } ] } )   //该查询与上正好相反,为上一个查询的补集

5. $exists

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Syntax: { field: { $exists: <boolean> } }

    //moongoDB中的exists通常是用于判断是否有这个键,而不是SQL中的某个列上存在某个值

    db.users.insert({ename:"robin",age:25})            //创建一个新的集合
    db.users.insert({ename:"henry",age:25,add:"SZ"})   //添加一个列

    db.users.find()                                    //查询集合上的记录
    { "_id" : ObjectId("57d4e95d280c7afecd0250c9"), "ename" : "robin", "age" : 25 }
    { "_id" : ObjectId("57d4e96f280c7afecd0250ca"), "ename" : "henry", "age" : 25, "add" : "SZ" }

    db.users.find( { add : { $exists : true } } )      //查询add列存在的记录
    { "_id" : ObjectId("57d4e96f280c7afecd0250ca"), "ename" : "henry", "age" : 25, "add" : "SZ" }

    db.users.find( { add : { $exists : false } } )     //查询add列不存在的记录
    { "_id" : ObjectId("57d4e95d280c7afecd0250c9"), "ename" : "robin", "age" : 25 } 

    db.users.find({$and :[ { add:{ $exists:false } },{ age : 25 } ] } )  //复合条件
    { "_id" : ObjectId("57d4e95d280c7afecd0250c9"), "ename" : "robin", "age" : 25 }   

    db.users.insert({author:"Leshami",blog:"http://blog.csdn.net/leshami"})           

6. $type //基于类型的查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    { field: { $type: <BSON type number> | <String alias> } }
    //类似于C#/Java中的typeof

    db.users.insert({ename:"fred",age:undefined,add:"SZ"})   //age列为undefined
WriteResult({ "nInserted" : 1 })

    db.users.find({age:{$type:6}})
    { "_id" : ObjectId("57d4ed86280c7afecd0250cb"), "ename" : "fred", "age" : undefined, "add" : "SZ" }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年09月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
书单 | 看完这几本书,不信拿不到好Offer!
👆点击“博文视点Broadview”,获取更多书讯 “毕业”优化的浪潮下,很多小伙伴可能都会有很多担心,想要寻求更好机会的小伙伴也深感现在的好机会没有那么多了。那在这样的环境下,是否还有拿到好Offer的机会呢? 机会,总是留给有准备的人!只要准备得足够充分,对知识体系掌握得足够全面,不管环境多难也挡不住闪闪发光的你! 不知道如何充分地准备面试? 快来看看下面这几本经过大家口碑验证过的面试宝典吧!看完它们,不信你拿不到好Offer! 01 《Offer来了:Java面试核心知识点精讲(第2版)》
博文视点Broadview
2022/07/19
9250
书单 | 看完这几本书,不信拿不到好Offer!
「算法与数据结构」从入门到进阶整理推荐书单
小吴花了几天时间整理了一下学习「数据结构与算法」可以参考的书籍,希望能在学习的道路上帮到你,文末提供收集的PDF版。
五分钟学算法
2019/01/23
1.6K0
打开算法和数据结构的两扇门,这样程序的灵魂和骨架就都有了
瑞士著名的科学家N.Wirth教授曾提出:数据结构+算法=程序。数据结构是程序的骨架,算法是程序的灵魂。当我们遇到一个实际问题时,首先需要解决两件事:
rainchxy
2020/02/25
6940
打开算法和数据结构的两扇门,这样程序的灵魂和骨架就都有了
写给Java程序员看的算法学习指南!
大家好,我是 Guide 哥!这篇文章我会推荐一些关于算法学习的书籍以及资源。希望对大家学习算法有帮助!
Guide哥
2020/05/07
1.6K0
写给Java程序员看的算法学习指南!
博文视点算法书单|让算法学习不再难
周五啦!有没有想要利用周末好好充电的小伙伴呢? 据博文菌所知,有不少小伙伴平时工作太忙没时间学习,都打算周末努力提升自己呢! 为了升职加薪,得到一份更好的工作,拥有美好的明天,大家也是拼了呀~~ 作为一名程序员,不管是想要面试一份好工作,还是想要在技术的道路上走得更远,算法都是我们需要提升的硬技能。 为了帮助大家更轻松、更有针对性地学习算法,博文菌特地为大家挑选了5本算法书,希望它们能够帮助大家开开心心地学习,快快乐乐地加薪! ----   01  ▊《labuladong的算法小抄》 付东来(@l
博文视点Broadview
2023/05/19
2190
博文视点算法书单|让算法学习不再难
书单 | AI领域爆品新书第2弹,打好算法基础,深入AI实战!
👆点击“博文视点Broadview”,获取更多书讯 上周和大家分享了10本今年出版的AI领域爆品新书,受到很多小伙伴们的追捧,强烈要求博文菌再来一期! 既然小伙伴们如此求知若渴,那么博文菌就毫无保留地把今年已出版的另外8本AI领域畅销品分享给大家,希望可以帮助大家打好算法基础,深入AI实战! ----   01 ▊《漫画算法2:小灰的算法进阶(全彩)》 魏梦舒(@程序员小灰) 著 爆款漫画算法书进阶版 和不停请假、面试的仓鼠小灰一起搞定算法与数据结构,笑迎大厂面试 《漫画算法:小灰的算法之旅》续
博文视点Broadview
2023/05/06
6800
书单 | AI领域爆品新书第2弹,打好算法基础,深入AI实战!
零压力入门算法的顶流畅销书《漫画算法》施展了哪些“魔法”?
相反,想入门算法,只要选对了书,每一天都可以是情人节! 比如,今天的主角《漫画算法:小灰的算法之旅(Python篇)》,
博文视点Broadview
2020/06/10
4040
1024程序员节 | 国内顶尖优质原创,致敬每一位可爱的你~~
👆点击“博文视点Broadview”,获取更多书讯 今天是1024程序员节 先来听听大佬们的祝福吧~~ 博文菌也祝各位可爱的程序员们 节日快乐,代码永无BUG! 在这值得庆祝的日子里 为了向每一位可爱的程序员致敬 我们必须拿出最高的诚意来才行! 博文菌挑选了24本国内顶尖优质原创 向每一位默默付出在技术一线、为技术发展添砖加瓦的你献礼 ---- 博文菌也争取到了购书福利 有需要的小伙伴一定不要错过哦~~ 京东满100减50 且叠劵可享满300减180 活动时间:10月24~27日 (优惠券102
博文视点Broadview
2023/04/04
7640
1024程序员节 | 国内顶尖优质原创,致敬每一位可爱的你~~
算法的力量!怪不得面试必考
👆点击“博文视点Broadview”,获取更多书讯 2022年TIOBE年度编程语言排行榜的结果出来了,Python稳居榜首,C++终于超越了Java,上升到第三位。 在之前的几年中,这个榜单的排名也都不尽相同。 前几年Java是比较火的,但最近两年随着人工智能(AI)的兴起,Python又成为头部。 可以用一句诗来形容:“江山代有才人出,各领风骚数百年”。 在语言火爆程度不断更迭变化的背后透露的是技术的革新以及主流编程工具不断变化发展。 也正是这种快速的变化,才使得人们都觉得IT行业是个不断更新,
博文视点Broadview
2023/04/04
3380
算法的力量!怪不得面试必考
书单丨从0起步探秘算法世界 畅享编程之趣
本书围绕程序设计典型算法,编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶,让你在愉悦的沉浸式体验中快速提升境界,加深对程序世界的理解
博文视点Broadview
2020/06/10
6140
书单丨从0起步探秘算法世界 畅享编程之趣
书单 | 我偷窥了你上个月在读什么书
👆点击“博文视点Broadview”,获取更多书讯 你上个月在读什么书呀? 都是爱学习的孩子,肯定读了不少书!博文菌没有办法把大家读的所有书都列出来,所以只能挑10本大家读得最多的新书分享给大家啦! 快来康康有没有被博文菌偷窥到呢? ----   01 ▊《漫画算法2:小灰的算法进阶(全彩)》 魏梦舒(@程序员小灰) 著 全网阅读量近2000万的漫画算法故事 和快乐的小仓鼠一起搞定数据结构和算法,从容面试 本书是《漫画算法:小灰的算法之旅》的续作,通过主人公小灰的心路历程,用漫画的形式讲述了多个数
博文视点Broadview
2023/05/06
3180
书单 | 我偷窥了你上个月在读什么书
荐书在精不在多,推荐一份夯实Java基础的必备书单!
每一年的年初都是买书学习热情高涨的时候,虽然不知道你们是让这些书吃灰还是真的会好好阅读,但是有一些书籍,我还是希望能够推荐给你们。
程序员黄小斜
2020/05/21
2.2K0
原创 | 初学者友好!最全算法学习资源汇总(附链接)
在计算机发展飞速的今天,也许有人会问,“今天计算机这么快,算法还重要吗?”其实永远不会有太快的计算机,因为我们总会想出新的应用。虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快增长,价格也在不断下降。可我们不要忘记,需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据。日益先进的纪录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面,随着研究手段的进步,数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别,都需要极大的计算量。在网络时代,越来越多的挑战需要靠卓越的算法来解决。
数据派THU
2020/08/28
9860
原创 | 初学者友好!最全算法学习资源汇总(附链接)
【读书笔记】《漫画算法》:克服对算法的恐惧,从漫画开始
在上小学和初高中的时候,要我写读后感这种东西,我是非常厌恶的。无非就是老师布置的一个作业,还是那种无趣且磨人的工作。
蛮三刀酱
2020/06/20
4520
学习计算机基础必读的4本经典入门书籍,自学编程必备书单!
新手学习计算机并非易事,作为一个自学编程的过来人,深知打好计算机基础的重要性,缺少了坚实的计算机的基础,往往你也难以往上走,即使学了再多高大上的技术,也都是在沙台上筑高楼,缺少根基,摇摇欲坠。
程序员黄小斜
2020/05/15
3.7K0
如何学好数据结构与算法
随着科学技术的发展,人工智能已渗透到各个行业,算法工程师非常火爆,急缺大量人才,年薪也越来越高。刚毕业30-40万很常见。很多人想入手学习算法,那么多算法,究竟该如何下手呢?
rainchxy
2020/02/25
7920
书单 | 5月畅销新书情报,你最Pick哪一本?【文末赠书】
👆点击“博文视点Broadview”,获取更多书讯 科技在发展,技术在迭代,我们的认知系统也需要不断地更新升级! 为了帮助大家及时获取新书书讯,博文菌会在每月月底盘点本月畅销新书,希望它们可以让我们的认知系统越来越强大! 一起来看一下5月份有哪几本畅销新书吧! ----   01 ▊《重学Java设计模式(全彩)》 付政委(小傅哥) 著 全网阅读超500万次 持续霸榜GitHub Trending的设计模式教程 本书是一本基于互联网真实案例编写的Java设计模式实践图书,帮助读者灵活地使用各种设
博文视点Broadview
2023/05/19
2490
书单 | 5月畅销新书情报,你最Pick哪一本?【文末赠书】
1024程序员:算法&仓鼠&创业
👆点击“博文视点Broadview”,获取更多书讯 1024特别专访 来看看本期专访的是谁吧? Q1 简单介绍一下自己吧 我是小灰,80后理工男,曾经做过10年程序员工作,后来转行全职做了自媒体。 我的微信公众号是程序员小灰,拥有45W粉丝,我出版的图书《漫画算法》系列,成为了IT领域的畅销书。 Q2 什么时候开始接触计算机与编程  最早接触编程是在高中,当时学校的计算机教了一点点QBasic语言。虽然QBasic比较简陋,课堂上所讲的知识也十分有限,但还是让我对编程产生了一定的兴趣,非常感谢当时的计算
博文视点Broadview
2023/05/06
2450
1024程序员:算法&仓鼠&创业
很多小伙伴问我推荐什么书籍和网课,这次把私藏很久的资料都贡献了(上)
平时有不少读者朋友问,有没有学习书籍网上课程推荐?今天结合自己学习经历与身边几个朋友的经历总结了一份程序员相关的书籍和网课。
C语言与CPP编程
2021/06/17
1.1K0
【小白成长】这几年看过的优秀书籍介绍
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。
帅地
2019/06/06
7850
【小白成长】这几年看过的优秀书籍介绍
推荐阅读
相关推荐
书单 | 看完这几本书,不信拿不到好Offer!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验