MongoDB Shell操作(二)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB Shell操作(二)

3.4 查询文档(find)

比较条件 符号 事例

等于 : db.stu.find({price:24})

大于 $gt: db.stu.find({price:{$gt:24}})

小于 $lt: db.stu.find({price:{$lt:24}})

大于等于 $gte: db.stu.find({price:{$gte:24}})

小于等于 $lte: db.stu.find({price:{$lte:24}})

不等于(数值) $ne: db.stu.find({price:{$ne:24}})

不等于(字符串) $not: db.stu.find({name:{$not:"《MongoDB 教程》"}})

与 { , ,} db.stu.find({price:{$gt:24}},{name:"《MongoDB教程》"})

或 $or[{ , ,}] db.stu.find({$or:[{price:{$gt:24}},{name:"《MongoDB教程》"}]})

包含 $in: db.stu.find({price:{$in:[23,24,25]}})

不包含 $nin: db.stu.find({price:{$nin:[23,24,25]}})

包含元素个数 $size:

tags属性中值为数组且包含三个元素的


db.stu.find(tags:{$size:3}})


配合find使用的其它方法


#

age:null不仅会匹配到age的值为null的文档,还会匹配到不包含age这个键的文档。
db.stu.find({age:null})
#限制返回值
db.stu.find().limit(3)
#指定跳过第几个文档
db.stu.find().skip(3)     //跳过第三个
#查询结果排序
查询结果按照指定属性升序显示(-1降序)
db.stu.find().sort({"属性":1})

4 游标

       db.stu.find()返回的就是一个游标,可以声明一个变量进行接收,它是数据遍历过程中的内部指针,是数据读取的接口。


       游标使用find方法返回,故上面说到配合find方法使用的sort、limit、skip等方法也可以使用,此外还有hint方法(强制使用索引进行查询)。


#声明游标并进行遍历
var cursor = db.stu.find()    //声明游标
while (cursor.hasNext()){     //判断游标的下一位有没有值
    var doc = cursor.next();  //有值的情况下在声明变量进行接收
    print(doc.name);          //
    print(doc);               //输出的是一条BSON类型的数据
    printjson(doc);           //转成JSON的形式输出
    print(tojson(doc));       //同上一行效果
}

5 索引

       什么叫索引呢?在没有索引的情况下,用户要是想要查询某个文档的话就必须扫描集合中的所有文档,来选择与查询条件相匹配的文档。然而,在有索引存在的情况下,用户可以先查询索引中是否有想要查询的文档,如果有的情况下就可以直接读,从而节约了大量的时间。


       索引的优点:提升文档的查询速率。相对而言,因为插入新的文档会引起索引顺序的重拍,从而会降低插入、更新的速率。


       MongoDB的索引基于B-tree数据结构,MySQL的索引基于B+tree数据结构。


#单索引
对stu集合中的score字段创建升序索引(-1降序)
索引名为:index1(索引名默认为字段名_1)
db.stu.createIndex({score:1},name:"index1")
#复合索引
对stu集合中的score字段创建升序索引,state降序索引
db.stu.createIndex({score:1,state:-1})
#唯一索引
对stu集合中的score字段创建升序唯一索引
db.stu.createIndex({score:1},{unique:true})
#查询stu集合的所有索引
db.stu.getIndexes()
#查询索引所占空间大小
db.stu.totalIndexSize()
#删除索引
索引的所有属性都不能有所不同,否则会删错索引,或提示无此索引
db.stu.dropIndex({score:1})
删除除_id索引外的所有索引
db.stu.dropIndexes()
#修改索引
先删除需要修改的索引,在创建一个修改后的索引

6 聚合

对返回的文档进行统计分析,使用aggregate方法实现。


💥管道操作:$match(过滤) $group(分组) $project(显示字段) $sort(排序) $limit(限制) $skip(跳过)


💥聚合运算符: $sum(求和) $avg(均值) $min(最小值) $max(最大值) $first $last $push


#只显示stu集合里文档的quantity和pnumber字段
db.stu.aggregate({$project:{quantity:1,pnumber:1,price:0}})
#过滤出stu集合里price大于4.0的所有文档
db.stu.aggregate({$match:{price:{$gt:4.0}}})
#对price字段升序排列
db.stu.aggregate({$sort:{price:1}})
#返回stu集合的前三个文档并跳过第一项
db.stu.aggregate({$limit:3},{$skip:1})

分组求和的两种方式

#管道聚合
按编号分组,并统计商品数量
db.stu.aggregate([{$group:{_id:"$pnumber",total:{$sum:"$quantity"}}}])
#MapReduce
var mapFunc = function(){
emit(this.pnumber,this.quantity);
};
var reduceFunc = function(key,values){
return Arrary.sum(values);
};
db.stu.mapReduce(mapFunc,reduceFunc,{out:{replace:'result'}})    //创建一个集合用来接收结果


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
6月前
|
JSON NoSQL MongoDB
实时计算 Flink版产品使用合集之要将收集到的 MongoDB 数据映射成 JSON 对象而非按字段分割,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
NoSQL Shell MongoDB
MongoDB Shell
10月更文挑战第11天
21 0
|
2月前
|
存储 NoSQL Shell
02 MongoDB数据类型、重要概念以及shell常用指令
文章详细解释了MongoDB中的数据类型、重要概念,并提供了常用的MongoDB Shell操作指令,帮助用户更好地管理和操作MongoDB数据库。
57 0
02 MongoDB数据类型、重要概念以及shell常用指令
|
4月前
|
DataWorks NoSQL fastjson
DataWorks操作报错合集之DataX进行MongoDB全量迁移的过程中,DataX的MongoDB Reader插件在初始化阶段找不到Fastjson 2.x版本的类库,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
存储 NoSQL Linux
【MongoDB】下载安装、指令操作
【MongoDB】下载安装、指令操作
181 1
|
5月前
|
分布式计算 DataWorks NoSQL
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
|
5月前
|
存储 NoSQL 数据挖掘
深入探索MongoDB聚合操作:解析数据之美
深入探索MongoDB聚合操作:解析数据之美
200 1
|
5月前
|
NoSQL Shell MongoDB
python操作MongoDB部分
python操作MongoDB部分
37 0
|
5月前
|
存储 Shell 开发者
Shell 数组:灵活操作的秘诀
**Shell 数组简介**:作为基础数据结构,数组在Shell编程中不可或缺。它们存储多个值,下标从0开始。创建如`array=(值1 值2...)`,访问用`${array[index]}`。增删改查及获取长度、拼接数组都有相应语法,例如`unset array[index]`删除元素,`${#array[@]}`获取长度。通过实践这些操作,提升Shell脚本技能。
45 0
|
5月前
|
NoSQL BI MongoDB
MongoDB 数据探索之道:查询文档操作详解
MongoDB 数据探索之道:查询文档操作详解