iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mongodb常用命令之查询
  • 822
分享到

Mongodb常用命令之查询

2024-04-02 19:04:59 822人浏览 八月长安
摘要

上一篇讲完了mongoDB的增、删、改,本文就来讲解他的强大的查询功能。一、find命令简介及初探在monGodb中的查询使用的是find()命令。他2个参数,第一个参数是你的查询条件(默认为{}表示查询所

上一篇讲完了mongoDB的增、删、改,本文就来讲解他的强大的查询功能。

一、find命令简介及初探

在monGodb中的查询使用的是find()命令。他2个参数,第一个参数是你的查询条件(默认为{}表示查询所有),第二个参数是指定你要返回的键(默认为{}表示返回所有)。下面我们将详解find()命令:

初始数据:db.user.save({name:"zhangsan",age:26,sex:"women",num:[1,2,4],height:164})

                             db.user.save({name:"lisi",age:22,sex:"man",num:[2,3,4],height :null})  

                            db.user.save({name:"wangwu",age:29,sex:"man"})

        a.查询user集合中所有的数据:db.user.find(),其实db.user.find()是db.user.find({})的简写,看着方便,舒服。

        b.查询name为lisi而且age为22的文档:db.user.find({name:"lisi",age:22});

        c.从返回的结果指定的返回键,查询name为lisi且只返回age键:db.user.find({name:"lisi"},{age:1}),但是你会发现"_id"这个键总是会返回回来,即使你没指定也一样,你可以使用{"_id":0}来不让其返回,如db.user.find({name:"lisi"},{age:1,"_id":0}).

        d.指定返回结果中不希望有某些个键,如查询name为lisi只不返回age这个键:db.user.find({name:"lisi"},{age:0}),其实和上一条差不多,只是相反。

在这里不得不说的就是findOne命令:他表示只返回结果中的第一条数据,如:

        db.user.findOne();


二、深入了解find()里的各种查询


$lt,$lte,$gt,$gte(条件句):他们分别对应的是:<,<=,>,>=。

例:查询年龄在22到26岁(含)之间的数据:db.user.find({age:{$gte:22,$lte:26}})

$ne:ne也就是not equal ,说白点就是不等于。

例:查询年龄不等于22的数据:db.user.find({age:{$ne:22}})


   原文地址:Http://1145004.blog.51cto.com/1135004/1265522    


$in,$all,$nin(三个跟的是数组):这三个查询操作可以接受一个到多个值的列表,也就是一个数组

$inMysql的in关键字很像,也相当于mysql中的or关键字的意思,表示满足这个数组之内的值之一都能查询出来.

例:查询name为zhangsan和lisi的数据:db.user.find({name:{$in:["zhangsan","lisi"]}})

                  $nin:这个就是not in的缩写,与in相反,也就是不在该数组之内的值会被查询出来。

例:db.user.find({name:{$nin:["zhangsan","wangwu"]}})将返回name为lisi的文档,而不会返回name为zhangsan、wangwu的文档。


$all这个东西和$in很像,但$all要求必须满足数组内所有的值。

例:db.user.find({num:{$all:[1,2]}})能查出{num:[1,2,4]}的文档,而查不出{num:[2,3,4]}的文档。

$or因为$in等只能对单一个键进行查询,而$or和mysql中的or差不多,对多个键进行或者查询(只要满足其一就能查询出来),or后面跟的是一个数组。

例:查询出name为"lisi"或者年龄为24的数据:db.user.find({$or:[{name:"lis"},{age:24}]})

$mod表示取余。

例:db.user.find({age:{$mod:[5,1]}})表示将查询age为1,6,11,16,21,26等用户,这里就会查询出age为26的用户。


注(重)

        1。条件句(如$lt)是内层文档的键,修改器(如$set)是外层文档的键。一个键可以有多个条件,但一个键不能对应多个更新修改器。如:db.user.update({name:"wangwu"},{$inc:{age:1},$set:{age:20}})这样更新不成功,因为age键被修改了两次。

        2。$in,$all会用到索引,而$nin不会用到索引,故多优先推荐$in,$all使用。


null值的查询:null是一个奇怪的东西。我们通过例子来查看,

例:我们要查询出heigth为null的数据,db.user.find({height:null})你会发现返回的不光是{height:null}的值,还会返回没有height键的文档。如果仅想要匹配键值为null的,还须要用到$exists操作符。如db.user.find({height:{$in:[null],$exists:true}})就能只返回height为null的文档了。注:由于mongodb无"$eq"操作符号,所以使用$in来代替。


正则表达示:能够很灵活的匹配字符串,例如实现mysql中的like功能。

例:

查询name以w开头的数据:

                  db.user.find({name:/^w/});

查询name 包括si的数据:

                  db.user.find({name:/si/});

查询name 包括si或者SI的数据(也就是不区分大小写):

                  db.user.find({name:/si/i})   ,i表示不区分大小写。


三、数组:


前面的$in,$all都是用于数组的,前面讲过了这里就不再解释了。

        $size针对数组用的,可用于查询指定数组的长度。

例:我要查询出num的长度为3的数据,db.user.find({num:{$size:3}})


$slice因为find第二个参数是指定返回的键,但$slice返回数组的一个子集合。让我们通过例子来说明他的用法及作用。

例:

                  a.我想返回name为" zhangsan "中num数组的前两个值:

                   db.user.find({name:" zhangsan "},{num:{$slice:2}}),就会返rsult的所有键且num数组只会返回前两个元素[1,2]。

                  b.我想返回name为" zhangsan "中num数组的最后两个值:

                   db.user.find({name:"zhangsan "},{num:{$slice:-2}}),就会返rsult的所有键且num数组只会返回前两个元素[2,4]。

                  c.我想返回name为" zhangsan "中num数组的第二到第三个元素:

                    db.user.find({name:" zhangsan "},{num:{$slice:[1,3]}}),就会返rsult的所有键且num数组会跳过第一个元素而返回第二个和第三个元素[2,4]。


通过指定数组位置来查询:

例:db.user.find({"num.1":3})表示查询num数组的第二个位置值为3的文档,即返回name为lisi的文档。


统计一个文档某一数组的长度(大小):

例:我们要得到name为zhangsan文档中num组的长度,db.user.findOne({name:"zhangsan"}).num.length.


查询内嵌文档:

来两条初始数据:db.user.save({name:"zangsan",age:22,stu:{name:"lidao",age:21}});

                                              db.user.save({name:"lisi",age:23,stu:{name:"xiaodao",age:20}});

我们要查询lisi的学生姓名为xiaodao的文档:db.user.find({"stu.name":"xiaodao"})

注意:我们在使用内嵌查询时在键上一定要加"",不然会报错的,如"stu.name"正确,而stu.name会报错误。


四、游标:

        mongodb使用游标来返回find的执行结果,因为游标类还实现了迭代器接口,所以还在可以在foreach中使用。

这里用一个简单的例子来说明:

        var result =  db.user.find()

        while(result.hasNext){

                  obj  = result.next();

                  print(obj.name);      

        }

$where有些需求无法满足时,$where就出现了,用它可以执行任意js作为查询的一部分,有了他几乎能做任何事。

例:查询年龄大于26的数据:

        db.user.find({$where:"this.age> 26"})

他等同于:=>var f =function(){return this.age > 26;}  

                           =>db.user.find(f)


$limit限制返回结果用的,此外$limit指定的是上限而非下限,如果不够就返回查询到的全部。

例:我要返回user集合所有数组的前两条,db.user.find().limit(2);


$skip他配合$limit使用的,也可以单独使用,且尽量避免过大量结果。我们通过例子说明。

例: db.user.find().skip(1);表示从第二条数据返回,也就是只返回name为lisi和wangwu的文档。

                  db.user.find().skip(1).limit(1);表示从第二条数据返回且只返回第一条数据,即name为lisi的文档。

注:$skip不适合作分页使用,因为假如有一百万数据,你就要略过大量结果,所以效率非常你,不适合作分页。


$sort对返回的结果进行排序

例:db.user.find().sort({age:1}),表示将返回的结果按age键进行升序排列。


最后一个说明 distinct操作:表示获取特定键中不同值列表的最简单的工具

例:db.user.find("name")他将返回["zhangsan","lisi","wangwu"]

注:distinct返回是有限制的,他的返回结果必须是16M。


您可能感兴趣的文档:

--结束END--

本文标题: Mongodb常用命令之查询

本文链接: https://www.lsjlt.com/news/42585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql常见的查询命令
    本篇内容介绍了“sql常见的查询命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! --查询版本号SQL...
    99+
    2024-04-02
  • mongodb 常用查询语句
    查看数据库的连接数:db.serverStatus().connections 查看当前数据库正在执行的语句:db.currentOp() 查看数据库中慢语句:db.system.profile...
    99+
    2024-04-02
  • mongodb命令行查询的方法是什么
    MongoDB命令行查询的方法是通过使用mongo shell来执行命令。Mongo shell是一个交互式JavaScript接口...
    99+
    2023-09-01
    mongodb
  • mongodb常用命令有哪些
    这篇文章主要讲解了“mongodb常用命令有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mongodb常用命令有哪些”吧!一、数据库常用命令1、Hel...
    99+
    2024-04-02
  • redis之常用命令
    keys:返回满足给定pattern的所有key。 127.0.0.1:6379> keys *  1) "num1"  2) "mylist3"  3) "key3" ...
    99+
    2024-04-02
  • MongoDB的常用命令汇总(Mongo4.2.8)
    目录一、数据库相关二、用户相关三、集合Collection相关一、数据库相关 1.切换/创建数据库 >use “dbname”; 2.查询所有数据库 > show dbs...
    99+
    2024-04-02
  • MYSQL 查询命令--单表查询
    基本查询语句 SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的。 SELECT语句的基本语法如下: select selection_list ...
    99+
    2024-04-02
  • MongoDB的常用命令有哪些
    MongoDB的常用命令有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、数据库相关切换/创建数据库>use “dbname”;查询所有数据库>&n...
    99+
    2023-06-26
  • linux万能查询命令——find命令
            find命令用来寻找文件或目录,功能非常强大,可以在查找到的文件上去执行命令,准确查找,遍历整个目录下的所有文件,可以对查询到的文件进行指定的动作,即查看、删除、移动等操作。 目录 1、常用查找命令 2、查找结果后的处理 3...
    99+
    2023-10-24
    linux 运维 服务器
  • MongoDB日常运维-01常用命令汇总
    MongoDB常用命令汇总(一) ---增,删,改,查 一:增(insert) 二:删(delete) 三:改(update) 四:查(select)  ---连接数...
    99+
    2024-04-02
  • MongoDB基础之查询文档
    目录一、查询文档实例二、条件操作符MongoDB 与 RDBMS Where 语句比较举例:使用 (<) 和 (>) 查询 - $lt 和 $gt三、AND 条...
    99+
    2024-04-02
  • ubuntu查询命令怎么用
    本篇内容主要讲解“ubuntu查询命令怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ubuntu查询命令怎么用”吧!一、以文件名查找find 命令,使用示例:find /&nbs...
    99+
    2023-07-04
  • MongoDB之数据查询(数组)
    首先在MongoDB里面是支持数组保存的,一旦支持了数组保存,就需要针对于数组的数据进行匹配。 范例:保存一部分数组内容 db.emp.insert({"name":"刘A","sex":"男","age...
    99+
    2024-04-02
  • MongoDB常用的基本操作命令
    这篇文章主要讲解了“MongoDB常用的基本操作命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB常用的基本操作命令”吧! ...
    99+
    2024-04-02
  • macos 查询端口占用 命令
    在 macOS 上查询端口占用的命令是通过使用lsof(list open files)工具来实现的。 lsof可以显示当前系统中打开的文件(包括网络连接和端口)的相关信息。 打开终端应用程序(Terminal),然后输入以下命令: bas...
    99+
    2023-10-10
    python django pygame virtualenv
  • 红队常用命令速查
    原文参考链接: https://github.com/safe6Sec/command 收集渗透中会用到的常用命令 。 建议直接[Ctrl+F]查找 java命令执行 http://www.jacks...
    99+
    2023-10-09
    linux php 运维 渗透测试 网络安全
  • vim系列之常用命令
    一.欢迎来到我的酒馆       在本章节介绍vim编辑器常用命令。 目录 一.欢迎来到我的酒馆二.vim常用命令 二.vim常用命令       2.1vim编辑器常用命令: i: 在光标位置处插入字符。o: 在下一行开始...
    99+
    2023-08-30
    编辑器 vim linux
  • MySql 之 常用命令汇总
    MySql 常用命令汇总 用户管理:一、数据库操作:二、创建表:三、修改表:四、插入数据:五、更新数据:六、删除数据:七、条件控制:八、MySQL的正则表达式:九、MySQL的一些函数:十、分组查询:十一、UNION规则——...
    99+
    2023-08-18
    mysql
  • MongoDB的安装及常用操作命令
    这篇文章主要讲解了“MongoDB的安装及常用操作命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB的安装及常用操作命令”吧!环境:cento...
    99+
    2024-04-02
  • Sql连接查询命令
    本篇内容主要讲解“Sql连接查询命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sql连接查询命令”吧!连接查询通过连接运算符可以实现多个表查询。连接是关系数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作