MongoDB讲义
删除当前的数据库
• db.dropDatabase()
对文档的CRUD操作
增加数据
• db.文档名称.save()
查询数据
• db.文档名称.find()
修改数据
• db.文档名称.update()
删除数据
• db.文档名称.remove()
条件操作符
$gt : > $lt : < $gte: >= $lte: <= $ne : !=、<> $in : in $nin: not in $all: all $not: 反匹配
增加数据示例
db.stu.save({stu_id:1,stu_name:“tom",stu_age:24}); 查询结果: • { "_id" : ObjectId("51aabe36775807593aaf765d"), "stu_id" : 1, "stu_name" : "tom", "stu_age" : 24 } _id字段是系统自动产生的一个唯一值标识,相当于自动生成的主键 ,是一个24位的字符串,可以在保持全局唯一,由以下四部分组成 • TimeStamp前4位是一个unix的时间戳,是一个int类别 • Machine 接下来的三个字节,就是所在主机的唯一标识符 • pid接下来的两位就是产生objectid的进程标识符 • increment后面的三个字节是一个自动增加的计数器 _id字段值也可以手动指定 • db.stu.save({_id:3,stu_id:3,stu_name:"rose",stu_age:25});
卸载MongoDB
1.在命令行下执行mongod –remove 删除注册的服务 2.删除硬盘文件
通过命令行进入数据库
默认会连接test数据库
数据库登陆验证
MongoDB数据库默认是无需登陆的,就是不用账号和密 码也可以使用 如果需要数据库登陆验证,则需要在正常启动之后,先进 入某个数据库,然后在这个数据库下添加一个新用户
查询stu_id not in (21,24,28)
• db.stu.find({ "stu_id" : { "$nin" : [21, 24, 28] } })
查询phone=[110,119,120]
• db.stu.find({ "phone" : { "$all" : [110, 120, 119] } }) • 用$all运算数组元素顺序可颠倒,一样可以匹配
• db.stu.find().count();
select count(*) from stu where stu_ioVUE设置显示本地时间
基本数据类型
null
• null类型用于表示空值或不存在的字段,如:{“one”:null}
布尔类型
• 布尔类型有两上值,’true‟和’false‟ ,如:{“one”:true}
32位整数
• 在由于mongoDB的控制台使用JS引擎进行输入,而JS仅支持64 位浮点数,所以32位整数将会被自动转义
MongoDB
NOSQL数据库
NOSQL数据库简介
NoSQL,指的是非关系型的数据库 ,意思是不仅仅是 SQL语句 NoSQL数据库的优点
• • • • 可以处理超大量的数据 运行在便宜的PC服务器集群上 击碎了性能瓶颈 操作简单
NoSQL数据库的缺点
• 不支持事务ACID特性 • 不适合复杂数据库设计
64位整数
• 64位整数与32位整数一样,在MongoDB控制台使用时,会转义成 64位浮点数
64位浮点数
• MongoDB控制台数字的默认类型,如:{“one”:2.02} {“one”:10}
基本数据类型2
字符串
• 如:{“one”:”Hello World”}
对象id
• 对象id是文档中唯一的12位的ID
• show dbs
查看所有的collection
• show collections
查看各collection的状态
• db.printCollectionStats()
常用命令2
拷贝数据库
• db.copyDatabase('mail_addr','mail_addr_tmp')
删除collection
内嵌文档
• 内嵌文档是将另一个文档当成这个文档中某个键的值,即嵌套JSON数据
条件查询数据示例
查询所有数据
• db.stu.find();
查询stu_id=1
• db.stu.find({ "stu_id" : 1 })
查询stu_id=1 and stu_name=“tom”
• db.stu.find({ "stu_id" : 1, "stu_name" : "tom" })
日期
• 日期类型是从标准纪元(公元1年)开始的始的毫秒数,不存储时区 ,如:{“one”:new Date()}
正则表达式
• 文档键值可以包含正则表达式,其正则表达式采用JS语法来表示 ,如:{“one”:/ho/i}
代码
• 文档中可以包含JS代码 如:{“one”:function(){}}
• • • • db.stu.find({ }, { "stu_id" : 1, "stu_name" : "" }) db.stu.find({ }, { "stu_id" : -1, "stu_name" : "abcd" }) db.stu.find({ }, { "stu_id" : 3, "stu_name" : true }) 以上只要非0值默认都为true,0为false
MongoDB本身并没有类似MySQL的auto_increment类型
通过工具插入数据
利用JS脚本循环插入数据
for (var i=10;i<=40;i ++) { db.stu.save({stu_id:i,stu_name:"simth"+i,stu_age:20+i}); }
在命令行下查看多条数据,需要用it命令查看更多
Mongo数据库服务器
• 相当于普通数据库的服务器
数据库DB
• 相当于一个MYSQL或者SQLSERVER数据库 • 无需Create Database之类的语句,直接use 数据库名,不存在的 数据库会自动创建
数据集合DBCollection(也称作名称空间namespace)
• 可以看做是一个普通数据库的表 • 不需要提前创建一个集合,在第一次增加数据的时候会自动创建
分页查询数据
查询limit 5,10,从结果集第6行开始,返回10行
• db.stu.find({ }).skip(5).limit(10)
按字段排序
order by stu_age,1为升序,-1为降序
• db.stu.find({ }).sort({ "stu_age" : 1 }) • db.stu.find({ }).sort({ "stu_age" : -1 })
文档DBObject、BasicDBObject
• 一个文档就是一个JSON字符串 • 可以把文档看做是一行记录
常用命令
查看用户列表
• ers.find()
删除用户
• db.removeUser('name')
查看所有用户
• show users
查看所有数据库
• use icss #切换数据库 • db.addUser(“admin”,“admin”) #添加新用户
然后需要在启动服务时增加--auth参数,表示登陆认证模 式 用如下命令登陆db.auth('admin','admin');
• 返回1表示登陆成功 • 返回0表示登陆失败
MongoDB的核心对象组成
条件查询数据示例2
查询stu_birthdate=„1983-4-7‟
• db.stu.find({stu_birthdate:new Date(1983,3,7)});
查询stu_id in (21,24,28)
• db.stu.find({ "stu_id" : { "$in" : [21, 24, 28] } })
消除重复行
select distinct stu_name from stu where stu_name=“simth40” • db.stu.distinct('stu_name',{stu_name:"simth40"});
统计查询
select count(*) from stu;
MongoDB简介
MongoDB事实上不是芒果的意思,而是超大数据库的含 义 MongoDB不是唯一的NOSQL数据库,但却是最普及的 NOSQL数据库
• 是一个介于关系数据库和非关系数据库之间的产品,是非关系数 据库当中功能最丰富,最像关系数据库的 • 由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储 解决方案 • 支持的数据结构非常松散,是类似json的bson格式,因此可以存 储比较复杂的数据类型 • 最大的特点是他支持的查询语言非常强大,其语法有点类似于面 向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝 大部分功能,而且还支持对数据建立索引
深入学习MongoDB全面介绍基础语法及集群replicatesharding-PPT课件
化数据
数据结构要求不严格,表结构可变,不
强项
需要像关系型数据库一样需要预先定义 表结构
13
MongoDB简介
5.适用场合
• 网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需 的复制及高度伸缩性。 • 缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后, 由Mongo搭建的持久化缓存层可以避免下层的数据源 过载。 • 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵, 在此之前,很多时候程序员往往会选择传统的文件进行存储。 • 高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的 路线图中已经包含对MapReduce引擎的内置支持。 • 用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储 及查询。
22
MongoDB操作
Document==Row
23
MongoDB操作
INSERT > er.save({name:'zhangsan',age:25,sex:true}) > er.find() { "_id" : ObjectId("4f69e680c9106ee2ec95da66"), "name" : "zhangsan", "age" : 25, "sex" : true } _id组合 ObjectId是"_id"的默认类型。ObjectId使用12字节的存储空间,每个字节二位十六进制数字 ,是一个24位的字符串 0 | 1 | 2 | 3 4 | 5 | 6 7 | 8 9 | 10 | 11 时间戳 机器 PID 计数器 1.时间戳:时间不断变化的 2.机器:主机的唯一标识码。通常是机器主机名的散列值,这样可以确保不同主机 生成不同的ObjectId,不产生冲突。 3.PID:为了确保在同一台机器上并发的多个进程产生的ObjectId是唯一的, 所以加上进程标识符(PID). 4.计数器:前9个字节保证了同一秒钟不同机器不同进程产生的ObjectId是唯一的。 后3个字节就是一个自动增加的计数器,确保相同进程同一秒产生的ObjectId也是 不一样。同一秒最多允许每个进程拥有16 777 216个不同的ObjectId。
mongodb教程
mongodb教程MongoDB教程MongoDB是一种开源的、面向文档的NoSQL数据库管理系统。
它以高性能、高可扩展性和易用性而闻名,是当今最受欢迎的NoSQL数据库之一。
本文将介绍MongoDB的基本概念、使用方法和常见操作等内容,帮助读者快速上手和应用MongoDB。
1. MongoDB简介MongoDB是由MongoDB公司开发和维护的一个开源项目。
它是一个面向文档的数据库,数据以BSON(Binary JSON)格式存储,支持丰富的数据结构,包括文档、数组、嵌套文档等。
MongoDB采用基于分布式文件存储的方式,支持水平扩展和高可用性。
它适用于处理海量数据和高并发访问的场景。
2. 安装和配置MongoDB要使用MongoDB,首先需要安装和配置它。
MongoDB提供了针对多个操作系统的安装包和二进制文件,安装过程相对简单。
安装完成后,可以通过编辑配置文件来配置MongoDB的参数,例如端口号、数据库存储路径等。
默认情况下,MongoDB会将数据存储在/var/lib/mongodb目录下。
3. 连接和运行MongoDB安装和配置完成后,可以使用命令行或图形界面工具连接和运行MongoDB。
MongoDB提供了丰富的命令行工具,例如mongo、mongodump、mongorestore等,它们可以用于数据库的管理和操作。
此外,还有许多第三方的可视化工具,例如Robo 3T、MongoDB Compass等,它们提供了更友好的界面和更多的功能。
4. 数据库和集合的操作在MongoDB中,数据库是用于存储数据的容器,而集合则是一组相关的文档。
可以使用命令行或图形界面工具创建数据库和集合,并对其进行增删改查等操作。
例如,使用db.createCollection()命令可以创建一个新的集合,使用db.collection.insertOne()和db.collection.insertMany()命令可以插入一个或多个文档,使用db.collection.find()命令可以查询文档。
mongodb 基础教学 -回复
mongodb 基础教学-回复MongoDB 是一种流行的NoSQL 数据库,它是开源的,使用JSON 风格的文档进行数据存储。
它的设计目标是供大规模、高性能的数据存储和处理需求使用。
本文将介绍MongoDB 的基本概念和使用方法,帮助读者理解并开始使用MongoDB。
1. 什么是MongoDB?MongoDB 是一个面向文档的数据库管理系统。
与传统的关系型数据库不同,MongoDB 使用文档代替了行和列,文档以JSON 或BSON 的形式存储。
MongoDB 以文档为单位进行数据存储和查询,文档可以是不同结构和属性的,这使得MongoDB 在处理半结构化数据非常灵活和高效。
2. 安装和配置MongoDB首先,我们需要下载并安装MongoDB 软件包。
根据所使用的操作系统,可以在MongoDB 官方网站找到对应的安装包,并按照安装指南进行安装。
安装完成后,需要进行一些配置。
首先,创建一个空文件夹作为MongoDB 的数据存储位置。
然后,使用配置文件指定数据目录和其他参数:storage:dbPath: /path/to/data/dbsystemLog:destination: filepath: /path/to/mongodb.lognet:bindIp: 127.0.0.1配置完成后,启动MongoDB 服务器。
3. 数据库和集合MongoDB 中的数据存储在数据库中,数据库由集合组成,而集合则由文档组成。
可以将数据库理解为关系型数据库中的数据库,集合类似于表,文档类似于表中的行。
在MongoDB 中,可以使用以下命令来创建数据库和集合:use mydb 创建名为mydb 的数据库db.createCollection("mycollection") 在mydb 数据库中创建名为mycollection 的集合4. 插入文档插入文档是向MongoDB 中添加数据的常用操作。
MongoDB入门经典
2 安装和配置MongoDB
2.1.1 安装 MongoDB
2.1.2 启动 MongoDB
2.1.3 配置 MongoDB
2.1.4 停止 MongoDB
2.1 搭建MongoDB环境
A
C
2.3.2 理解 MongoDB shell
命令
2.3.1 启动 MongoDB shell
2.3.3 理解 MongoDB shell原生
F
1.5 规划数据模型
1 NoSQL和MongoDB简介
1.5.7 使用大型集合 还是大量集合
A
1.5.8 确定数据的生 命周期
B
1.5.9 考虑数据可用 性和性能
C
1.5 规划数据模型
1 NoSQL和MongoDB简介
01
02
03
1.8.1 小 1.8.2 小 1.8.3 练
测验 测验答案
习
1.8 作业
3.7 理 解变量 作用域
3.8 使用 JavaScri pt对象
3.9 操 作字符 串
3.10 使 用数组
3.11 添 加错误 处理
3.12 小结
3 在MongoDB shell中使 用JavaScript
3.13 问与答 3.14 作业
3 在MongoDB shell中使用 JavaScript
3 在MongoDB shell中使用JavaScript
2017
3.2 理解 JavaScript数
据类型
2019
3.4 使用运算 符
2021
3.6 创建函数
01
02
03
04
05
06
3.1 定义变量
MongoDB入门讲解
2021/3/7
CHENLI
13
MongoDB下载安装
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量 大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--port 启用端口号 --fork 在后台运行 --only 指定只复制哪一个数据库 --slavedelay 指从复制检测的时间间隔 --auth 是否需要验证权限登录(用户名和密码)
2021/3/7
CHENLI
✓ 要更新所有匹配的文档,可以将update的第四个参数设置为true
✓ db.foo.update({},{"$set":{name:'tes'}},false,true)
✓ 在MongoDB找下级是按点的方式:比如user下有叫logs数组,就
2u02s1/3e/7r.logs
CHENLI
18
MongoDB应用
不可恢复。但是不会删除collection; ✓ db.collection.drop();直接删除collection; ✓ 去重? ✓ Distinct() ✓ db.collection.distinct(field, query) ✓ Field – 类型:字符串;返回非重复的字段。 ✓ Query – 类型:文档;查询条件。 ✓ er.distinct("_id", {age: 1})
✓ 配置文件启动 ➢ 在mongodb下创建mongo.config文件,编辑mongo.config,输入
dbpath=D:\mongodb\data\db logpath=D:\mongodb\log\mongo.log 进入bin目录下,输入 mongod --config /mongodb/mongo.config
MongoDB培训
22
第四部分 MongoDB高级应用
23
MongoDB 图形化管理工具
MongoVUE - 一个windows下的客户端管理工具 MongoHUB - Mac 下的 MongoDB 客户端。
Server Density - 是一个商业的监控服务提供商
MongoDB培训
> superwen > superwen@
第一部分 MongoDB简介
2
MongoDB特性
MongoDB是一个可扩展、高性能的下一代数据库,它的特点是高性能、易部署、易使用、存储 数据非常方便,主要特性有: 1、面向文档存储,json格式的文档易读,高效。 2、模式自由,支持劢态查询、完全索引,无模式。 3、高效的数据存储,效率提高。 4、支持复制和故障恢复。 5、以支持于级别的伸缩性,支持水平的数据库集群,可劢态添加额外的服务器
集合 一组文档的集合。一个集合下的稳定无模式限制。
提问:既然是这样为什么还会有多个集合?
注意:集合命名 丌能为空,\0,丌能以system.开头,丌能含有 $
数据库命名 小写 丌能含有 空格,$ \ / \0等
4
Hale Waihona Puke MongoDB的局限与不足
• • 在32位系统上,丌支持大亍2.5G的数据。 单个文档大小限制为 16 M
20
MongoDB shell 增删改查
db.addUser("theadmin","anadminpassword"); //添加用户 db.addUser("guest","passwordForGuest",true); //添加只读用户
db.auth("theadmin","anadminpassword"); //添加认证
mongodb讲解
mongodb讲解
MongoDB是一种基于文档的数据库管理系统,以非关系型数据库
技术为基础。
它已成为当今最流行的NOSQL数据库之一,广泛用于各种Web应用程序、电子商务和社交媒体。
以下是MongoDB的一些重要的特点和优势。
1. 非关系型:相对于传统的关系型数据库,MongoDB以文档的方式存
储数据,使得数据的结构更灵活,更能适应复杂多变的数据需求。
2. 非结构化数据:MongoDB可以处理非结构化数据,例如图像、音频、视频等等。
3. 扩展性:MongoDB有很好的扩展性,可以通过水平扩展增加服务器,而不用像传统关系型数据库那样需要增加硬件来实现扩展。
4. 高性能:MongoDB能够进行高效的数据读写操作,因为它能够快速
处理复杂的查询操作。
5. 数据可靠性:MongoDB提供了数据的副本备份、故障恢复等机制,
可以保证数据的可靠性和安全性。
6. 易于使用:MongoDB可以使用各种编程语言进行开发,包括Java、Python、PHP等等,相关的驱动程序和库也很齐全。
7. 数据库设计:MongoDB支持丰富的数据建模特性,可以进行更灵活、自然的数据建模。
总之,MongoDB的使用受到越来越多企业和开发者的认可和喜爱,其
高性能、扩展性、可靠性和易用性,成为该数据库领域的佼佼者。
如
果你需要一种可扩展、易于部署而且运行快速的数据库技术,MongoDB无疑是一种值得推荐的选择。
MongoDB入门讲解幻灯片
MongoDB简介
? 为什么要用Mongo?DB ? MongoD的B设计是要结合键值存储和关系型数据库的最好特性。键值存
储,因为非常简单,所以速度极快而且相对容易伸缩。关系型数据库 较难伸缩,至少很难水平伸缩,但拥有富数据模型和强大的查询语言。 如果MongoD能B介于两者之间,就能成为一款易伸缩、能存储丰富数据 结构、提供复杂查询机制的数据库。在使用场景方面, MongoD非B常适 合用做以下应用程序的主要数据存储: We应b 用程序、分析与记录应用 程序,以及任何要求有中等级别缓存的应用程序。此外,由于它能方 便地存储无Schem数a 据,MongoD还B很适合保存事先无法知晓其数据结 构的数据。
7
第二节
了解如何获得 MongoD软B件,包括如何 为自己的环境选择正确的版本,如何在
Window和s linux 中安装和检测运行。
8 返回
MongoDB下载安装
? 选择正确版本? ? MongoD所B使用的版本管理相当简单: 偶数号为稳定版 ,奇数号为开发
版。注意: 32 位产品与 64 位产品之间的区别。 32 位和 64 位版本 的数据库目前有着相同的功能,唯一的区别是: 32 位版本将每个服务 器的数据集<?????>总大小限制在 2GB左右;64 位版本没有 任何限制, 所以在生产环境中应该优先使用 64 位版本。另外, 不同的版本之间也 有可能发生变化 ? 下载Mongo?DB ? 下载地址: https:///downloads ? 安装Mongo?DB ? 在Linux中安装MongoD有B,两种方式:一、通过仓库安装 MongoD二B;、 手动安装MongoDB ? 在Window中s 安装MongoD只B,需要根据自己的需要下载安装包、解压后 运行即可。
mongodb复习资料
mongodb复习资料MongoDB复习资料MongoDB是一种流行的NoSQL数据库,被广泛应用于各种大规模数据管理和处理场景。
本文将为读者提供一份MongoDB复习资料,帮助大家回顾和巩固相关知识。
一、MongoDB简介MongoDB是一个开源的文档数据库,采用了面向文档的数据模型。
它以BSON (Binary JSON)格式存储数据,支持动态模式和灵活的查询语言。
相比传统的关系型数据库,MongoDB在处理大量数据和高并发访问时表现更为出色。
二、数据模型MongoDB的数据模型是以文档为基本单位的。
文档是一个键值对的集合,类似于关系型数据库中的一行数据。
文档可以包含各种类型的值,如字符串、整数、数组、嵌套文档等。
通过使用文档,MongoDB可以轻松地表示复杂的数据结构。
三、集合与文档MongoDB中的数据存储在集合(Collection)中,一个集合可以包含多个文档。
集合类似于关系型数据库中的表,文档则类似于表中的行。
通过使用集合和文档,MongoDB可以高效地存储和查询数据。
四、索引索引是MongoDB中提高查询性能的重要机制。
MongoDB支持各种类型的索引,如单字段索引、复合索引、文本索引等。
通过创建适当的索引,可以加快查询速度并提高系统性能。
五、查询语言MongoDB的查询语言非常灵活,支持各种类型的查询操作。
常见的查询操作包括查找、排序、过滤、投影等。
通过熟练掌握查询语言,可以高效地检索和处理数据。
六、聚合框架MongoDB提供了强大的聚合框架,用于处理和分析大规模数据集。
聚合框架支持各种聚合操作,如分组、排序、筛选、计数等。
通过使用聚合框架,可以进行复杂的数据处理和统计分析。
七、事务处理MongoDB从版本4.0开始支持事务处理。
事务是一组操作的逻辑单元,要么全部执行成功,要么全部回滚。
通过使用事务,可以确保数据的一致性和完整性。
八、安全性MongoDB提供了多种安全机制,保护数据免受未经授权的访问和恶意攻击。
mongodb介绍精品PPT课件
MongoDB 文档(document) 集合(collection) 数据库(database)
关系型数据库 行(row) 表(table) 数据库(database)
数据类型
*文件的分隔是Mongodb系统自动分隔的。
目录
Mongodb介绍 ➢ 结构介绍 ➢ 复制原理 ➢ 分片原理
Mongodb 应用举例 ➢ 架构部署 ➢ 数据模型
复制冗余分类
1、Master-Slave Replication
Master
Slave
Slave
1、Replica Set
Primary
这个值很重要,
在选举(如master宕 机时)新primary时, 会选择ts最大的那 个secondary作为新
• 面向文档存储, 文档的检索方式, 类似JAVASCRIPT。
易使用 • 文档存储方式是BJSON, 数据格式非常类似JS的JSON格式。
模式自 • 文档内部可以定义很多数据类型, 文档可动态变化添加。 由
适用场景
实时的插入、更新、查询, 具备数据存储的复制
适合由数十台、数百台组成
的数据库,MONGODB包含 了MAPREDUCE的内置支持
应用架构
Application
MMP
MMM
Mongo Service
C++ API
Mongo Mongo Mongo Mongo Mongo Dump restore import export stat
服务与支撑
JAVA API
WEB API
