《mongoDB》查询
一:简单查询
db.collection.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。- 查询时使用 .pretty() 可以使代码格式化显示,类似于 \G
- find() 语句不加 QUERY 条件时,默认查询集合文档,默认显示20条
如果只想找到一条记录,请使用 findOne()
> db.demo.findOne({"name":"lisi"})
{
"_id" : ObjectId("5c6158fa2f5e0916de3c790e"),
"name" : "lisi",
"age" : 26
}projection 可以选择字段是否展示 1为展示/0不展示
find()/findOne()同理 > db.demo.findOne({"name":"lisi"}, {"_id":0,"name":1})
{ "name" : "lisi" }
二:查询条件查询
- 适用的查询条件有
- $lt 小于
- $lte 小于等于
- $gt 大于
- $gte 大于等于
找到 年龄(age) 小于30 大于25的文档
> db.demo.find({"age" : {"$lt" : 30, "$gt" : 25}})
{ "_id" : ObjectId("5c6158eb2f5e0916de3c790c"), "name" : "zhangsan", "age" : 26 }
{ "_id" : ObjectId("5c6158fa2f5e0916de3c790d"), "name" : "zhangsan", "age" : 26 }
{ "_id" : ObjectId("5c6158fa2f5e0916de3c790e"), "name" : "lisi", "age" : 26 }
{ "_id" : ObjectId("5c61590f2f5e0916de3c790f"), "name" : "zhangsan", "age" : 26 }
{ "_id" : ObjectId("5c61590f2f5e0916de3c7910"), "name" : "lisi", "age" : 26 }
三:OR 查询
- $in 可以查询一个键的多个值
> db.demo.find({"age" : {"$in":[20,26]}})
{ "_id" : ObjectId("5c613f942f5e0916de3c7909"), "age" : 20 }
{ "_id" : ObjectId("5c6158eb2f5e0916de3c790c"), "name" : "zhangsan", "age" : 26 }
{ "_id" : ObjectId("5c6158fa2f5e0916de3c790d"), "name" : "zhangsan", "age" : 26 }
{ "_id" : ObjectId("5c6158fa2f5e0916de3c790e"), "name" : "lisi", "age" : 26 }
{ "_id" : ObjectId("5c61590f2f5e0916de3c790f"), "name" : "zhangsan", "age" : 26 }
{ "_id" : ObjectId("5c61590f2f5e0916de3c7910"), "name" : "lisi", "age" : 26 }- OR 更通用,可以查询更多的条件
> db.demo.find({"$or" : [{"age" : 20}, {"name":"lihong"}]})
{ "_id" : ObjectId("5c613f942f5e0916de3c7909"), "age" : 20 }
{ "_id" : ObjectId("5c61587a2f5e0916de3c790b"), "name" : "lihong", "age" : 25 }
四:null 查询
- null 的匹配是有些奇怪,不仅仅会匹配某个键为null的文档,还会匹配不包含这个键的文档
> db.demo.find({"age" : null})
{ "_id" : ObjectId("5c61011d0a485d689a5f3e15"), "c" : "d" }
{ "_id" : ObjectId("5c6147c92f5e0916de3c790a"), "age" : null }- 如果只是想匹配 null 的存在,还需要 使用 exists 来判断键值是否存在
db.demo.find({"age" : {"$in" : [null], "$exists" : true}})
{ "_id" : ObjectId("5c6147c92f5e0916de3c790a"), "age" : null }
五:数组
- 数组的查询和标量的查询类似
插入
> db.demo.insert({"fruit" : ["banana", "apple", "origin"]});
WriteResult({ "nInserted" : 1 })查询
> db.demo.find({"fruit" : "apple"})
{ "_id" : ObjectId("5c6259632f5e0916de3c7912"), "fruit" : [ "banana", "apple", "origin" ] }
- 匹配多个元素的数组
> db.demo.find({"fruit" : {$all :["banana", "apple"]}});
{ "_id" : ObjectId("5c6259632f5e0916de3c7912"), "fruit" : [ "banana", "apple", "origin" ] }
{ "_id" : ObjectId("5c6259de2f5e0916de3c7913"), "fruit" : [ "banana", "apple" ] }
- 根据数组长度匹配
> db.demo.find({"fruit" : {$size : 3}});
{ "_id" : ObjectId("5c6259632f5e0916de3c7912"), "fruit" : [ "banana", "apple", "origin" ] }
六:查询内嵌文档
七:$where 查询
- 避免使用,英文在查询时需要把文档从 BSON 转为 Javascript 对象操作
八:limit/skip/sort
- limit
- limit 指定为上限
db.demo.find().limit(3);
- skip
- 跳过前 n 个匹配的文档
- 一次略过过多会导致性能问题,用排序或者其他方法解决
db.demo.find().skip(3);
- sort
- 接受一对键值对作为排序,1升序/-1降序,如果指定多个键,则按照顺序进行排序
> db.demo.find().sort({"age": -1, "name":1});
{ "_id" : ObjectId("5c6158fa2f5e0916de3c790e"), "name" : "lisi", "age" : 26 }
{ "_id" : ObjectId("5c61587a2f5e0916de3c790b"), "name" : "lihong", "age" : 25 }
{ "_id" : ObjectId("5c613f942f5e0916de3c7909"), "age" : 20 }- 对于混合数据的比较,由大到小
一
《mongoDB》查询的更多相关文章
- MongoDB查询转对象是出错Element '_id' does not match any field or property of class
MongoDB查询转对象是出错Element '_id' does not match any field or property of class 解决方法: 1.在实体类加:[BsonIgno ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- mongodb查询文档
说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...
- [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“
mongodb 查询条件 这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...
- Mongodb查询的用法,备注防止忘记
最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find() //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...
- mongodb查询关于大于小于的用法;
mongoDB查询操作符: http://www.runoob.com/mongodb/mongodb-operators.html 项目中需要的场景是这样的,每个人每天只能领取一张明信片,换句话说, ...
- MongoDB查询分析
MongoDB 查询分析可以确保我们建立的索引是否有效,是查询语句性能分析的重要工具.MongoDB 查询分析常用函数有:explain() 和 hint(). 1. explain(): 提供查询信 ...
- 【mongodb系统学习之十】mongodb查询(一)
十.mongodb查询:find ;查询时条件中不能引用文档中其他键的值: 1).查询数据库全部数据:语法db.collectionName.find();默认只显示前20条,如图: 2).按条件查询 ...
- MongoDb进阶实践之三 MongoDB查询命令详述
一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命 ...
- MongoDb进阶实践之六 MongoDB查询命令详述(补充)
一.引言 上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...
随机推荐
- git初始化本地项目并推送到git服务器
1.创建本地项目,在项目根目录执行git init命令 git init 2.在git服务器上创建一个仓库,这里使用GitHub创建一个仓库. 3.执行git remote add origin &l ...
- 【转】数据分析sql常用整理
[SQL 数据分析常用语句] • 1 基础查询 • 2 字符串数字日期时间 • 3 聚合数据查询 • 4 子查询 • 5 联接组合查询 • 6 高级查询 • 7 更新数据 阅读提醒:点击图片放大可看清 ...
- Java Socket 死循环while如何判断客户端断开
多线程的服务器程序 线程中等待客户端的消息 我的代码能实现服务器与客户端的通信 问题是: 当客户端中断或退出 以上代码却不能判断Socket中断 跳不出while的无限循环 解决方法: ...
- 设计模式-结构型模式, mvc 模型视图控制器模式(8)
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...
- .bat文件调用java类的main方法
此处记录一个小例子,备用,说不定哪天写小工具时会用到. @echo on set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43 set classpath=. ...
- puppt服务资源管理
1.服务资源的特性 controllable 提供变量控制 enableable 可以启动 停止服务 refreshable 可以重启服务 2.可用参数: ensure ...
- 【netcore入门】在Windows IIS上部署.NET Core 2.1项目
部署之前先检查下面2个先决条件是否满足 1.安装了 IIS 模块 win7 在 控制面板→程序和功能→打开或关闭Windows功能→勾选Internet 信息服务(Internet Informati ...
- cube-ui修改按钮颜色
首先,当我们按照脚手架一步一步创建完项目以后 $ vue init cube-ui/cube-template projectname $ sudo npm install $ npm start 主 ...
- C - 食物链
来源poj1182 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是 ...
- linux 下开源代理路由工具
服务器搭建,参考 https://gfw.press/blog/?p=21 运行环境 openjdk1.8,linux 1.首先,获取工具地址 git clone https://github.com ...