MongoDB讲义
MongoDB入门讲解
➢ 下载地址:https://www.mongodb.org/downloads
✓ 安装MongoDB?
➢ 在Linux中安装MongoDB,有两种方式:一、通过仓库安装 MongoDB;二、 手动安装MongoDB
➢ 在Windows中安装MongoDB,只需要根据自己的需要下载安装包、解压后 运行即可。
2021/3/7
CHENLI
11
MongoDB下载安装
✓ 命令启动 ➢ 进入到bin目录下,输入命令
./mongod --dbpath=/usr/local/soft/mongodb/data -logpath=/usr/local/soft/mongodb/logs/MongoDB.log --logappend --auth --port=27017 --fork
2021/3/7
CHENLI
12
MongoDB下载安装
✓ 停止服务
➢ 最稳妥的方式,处理完当前所有操作并将缓存的数据保存到磁盘上才停 止
>user admin
>db.shutdownServer();
当然我们也可以直接关闭进程,但这种方式会导致缓存中的数据未急 时刷新保存到磁盘上而丢失
✓ 参数解释: --dbpath 数据库路径(数据文件) --logpath 日志文件路径 --master 指定为主机器 --slave 指定为从机器 --source 指定主机器的IP地址 --logappend 日志文件末尾添加
MongoDB培训
19
MongoDB shell 增删改查
3
MongoDB工作方式
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成, MongoDB同样也是由数据库(database) 、集合(collection)、文档对象(document)三个层次组
成。
文档 类似亍json的键值对。{“name”: ”jone”,”age”: 13}
集合 一组文档的集合。一个集合下的稳定无模式限制。
提问:既然是这样为什么还会有多个集合?
注意:集合命名 丌能为空,\0,丌能以system.开头,丌能含有 $
数据库命名 小写 丌能含有 空格,$ \ / \0等
4
MongoDB的局限与不足
• • 在32位系统上,丌支持大亍2.5G的数据。 单个文档大小限制为 16 M
[“apple”,”blanan”,”pear”]
内嵌文档
{“username” : “jone”, “age”: 13, “contact” : {“home”:”123”,”moblie”:”456”}}
MongoDB知识点总结
MongoDB知识点总结
⼀:MongoDB 概述
⼀、NoSQL 简介
1. 概念:NoSQL(Not Only SQL的缩写),指的是⾮关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。⽤于超⼤规模数据的存储,数据存储不需要固定的模式,⽆需多余操作就可以横向扩展。
2. 特点
1. 优点:具有⾼可扩展性、分布式计算、低成本、架构灵活且是半结构化数据,没有复杂的关系等。
2. 缺点:没有标准化、有限的查询功能、最终⼀致是不直观的程序等。
3. 分类
4. NoSQL 和 RDBMS 的对⽐
⼆、MongoDB 简介
1. 概念:MongoDB 是由C++语⾔编写的⼀个基于分布式⽂件存储的开源⽂档型数据库系统。
2. 功能:JSON ⽂档模型、动态的数据模式、⼆级索引强⼤、查询功能、⾃动分⽚、⽔平扩展、⾃动复制、⾼可⽤、⽂本搜索、企业级安全、聚合框架MapReduce、⼤⽂件存储GridFS。
1. ⾯向集合⽂档的存储:适合存储Bson(json的扩展)形式的数据;
2. 格式⾃由,数据格式不固定,⽣产环境下修改结构都可以不影响程序运⾏;
3. 强⼤的查询语句,⾯向对象的查询语⾔,基本覆盖sql语⾔所有能⼒;
4. 完整的索引⽀持,⽀持查询计划;
5. 使⽤分⽚集群提升系统扩展性;
3. 适⽤场景
1. ⽹站数据:Mongo⾮常适合实时的插⼊,更新与查询,并具备⽹站实时数据存储所需的复制及⾼度伸缩性。
2. 缓存:由于性能很⾼,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
MongoDB使用文档
MongoDB使用
目录
目录 (1)
一、传统数据库技术回顾 (2)
二、NoSQL (4)
三、MongoDB介绍安装 (6)
四、数据库使用 (9)
4.1 插入数据 (10)
4.2 查找数据 (10)
4.3 修改数据 (14)
4.4 删除数据 (15)
一、传统数据库技术回顾
数据库就是存储数据的,那么存储数据就用txt就行了啊,为什么要有数据库?
理由之1:数据库有行、列的概念,数据有关系,数据不是散的。
老牌数据库,比如MySQL、SQL Server、Oracle、Access。这些数据库,我们管他们叫做结构型数据库。为什么?因为每个表中,都有明确的字段,每行记录,都有这些字段。不能有的行有,有的行没有。
理由二:数据库能够提供非常方便的接口,让增删改查操作变得简单
我们的老牌数据库,都无一例外的使用SQL语言,管理数据库。
SQL就是structure query language。
比如,查询所有女生:SELECT * FROM step1 WHERE sex= '女';
再比如,查询所有女生,并且年龄20~24之间,且在北京:
1SELECT * FROM step1 WHERE xingbie = '女' AND nianling < 24 AND nianling >= 20 AND xianzaisuozaidi = '北京';
理由之三:数据库不能自己玩儿,要给向PHP、.net、jsp等语言提供接口。
用php这些语言,能够向数据库之中增删改查。
老牌数据库,都是结构型数据库,现在出了什么问题?
MongoDB基础教程
MongoDB基础教程
第一部分
翻译原因
网上的相关说明别说中文了连英文都很少,而且有的基本上就是一些简单的配置,加上最近时间比较多,有点想做,所以就做了。
致谢
先感谢国家,谢谢国家对我的培养,再感谢组织,感谢我的公司给我了研究MongoDB 的机会,让我有时间去研究了MongoDB,最后感谢父母的养育之恩。
温馨提示
我以下所有示例都是建立在Java语言的基础上,只作java语言的介绍,其他语言类似。
概述
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性
*支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
*文件存储格式为BSON(一种JSON的扩展)
*可通过网络访问
所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
mongodb 详解
mongodb 详解
MongoDB是一个开源、跨平台、文档型的 NoSQL 数据库管理系统。
它不是关系型数据库,而是面向文档的数据库。MongoDB采用BSON (Binary JSON)格式来存储数据,支持复杂的数据类型和嵌套数据结构,以及灵活的查询语言。
MongoDB的主要特点包括:
1. 高性能:MongoDB是基于内存存储,支持水平扩展,能够支持高
吞吐量和大数据量的应用场景。
2. 灵活的数据模型:MongoDB支持复杂的数据类型和嵌套数据结构,使得数据的存储和查询更加方便和灵活。
3. 易扩展性:MongoDB支持水平扩展,能够通过添加更多的节点来
提高性能和可用性。
4. 高可用性:MongoDB支持自动故障转移、副本集和分片技术,提
高了系统的可用性和可靠性。
5. 开源:MongoDB是开源软件,社区活跃,有大量的文档和资源,
便于用户学习和使用。
6. 支持地理空间数据:MongoDB支持地理空间数据存储和查询,能
够处理空间相关的数据,如地图、GPS等。
总之,MongoDB是一个非常强大、灵活、高效的数据存储平台,适用
于各种应用场景和行业。它将 NoSQL 数据库带入了新一代。
mongodb介绍精品PPT课件
适用 场景
MONGODB的BJSON非 常合适文档化格式的
存储查询
适合作为信息基础设施 的持久化缓存层
不适用场景
高度的事务 系统(最终
一致性)
传统的商 业智能
不适用 场景
极为复杂 的查询系
统
数据逻辑结构
数据库
{
DATABASE1
集合1
集合2
文档1
文档2
文档3
文档4
}
“id” : “610000”, “name”:”test”, “address”: {
*文件的分隔是Mongodb系统自动分隔的。
目录
Mongodb介绍 ➢ 结构介绍 ➢ 复制原理 ➢ 分片原理
Mongodb 应用举例 ➢ 架构部署 ➢ 数据模型
复制冗余分类
1、Master-Slave Replication
Master
Slave
Slave
1、Replica Set
Primary
数据类型
NULL Boolean String Object ID Date Regular expression Array Embedded document
描述
空,不存在的值 true、false 任意UTF8 12位唯一的ID 保存从纪元到现在的毫秒数 JS的正则表达式 数组 嵌入文档
mongodb基础知识
mongodb基础知识
⼀. 基础概念
1. 数据:能够输⼊到计算机中并被识别处理的信息集合
2. 数据结构:研究⼀个数据集合中,数据元素关系
3. 数据库:按照数据结构,存储管理数据的仓库。数据仓库是在数据库管理系统管理控制下在⼀定介质中创建的
4. 数据库管理系统:数据库管理软件,⽤于建⽴维护操作数据库
5. 数据库系统:由数据库和数据库管理系统等构成的数据库开发⼯具集合。
⼆. 关系型数据库 & ⾮关系型数据库
1. 关系型数据库:采⽤关系模型(⼆维表)来组织数据结构的数据库
【1】常见关系型数据库:Oracle DB2 SQLServer MySQL SQLite
【2】优缺点:
优点:* 逻辑清晰,容易理解,结构类似常见表格
* 使⽤SQL语句,技术成熟,使⽤⽅便
* 关系型数据库⽐较成熟,可以使⽤⼀些复杂的操作
缺点:* 每次操作都需要专门的sql解析
* 关系型数据库结构严格,内部加锁
* 在应对海量数据并发处理时读写速度差
2. ⾮关系型数据库(NoSql-->not only sql)
【1】常见的⾮关系型数据库
* 不是采⽤关系模型构建的数据库
键值型: Redis
列存储: HBase
⽂档型: MongoDB
图形: Graph
【2】优缺点
优点: * 读写速度快,更好的针对并发处理
* 使⽤灵活,容易扩展
缺点: * 没有sql那样统⼀成熟的语句
* 技术成熟度较差,缺少⼀些复杂操作
【3】应⽤场景
1. 对数据格式要求不严格,⽐较灵活
2. 对数据处理速度,特别是海量数据的并发处理速度要求⽐较⾼
MongoDB入门到精通-PPT版
删除文文档
!
//删除全部 db.user.remove(); //删除指定记录 db.user.remove({“name”:“zhangyu”});
!
//删除user集合 db.user.drBaidu Nhomakorabeap();
更新文文档
原文文档: { “_id”:ObjectId("52c3c518498a9646a48133a2"), “name”:“zhangyu”, “email”:“zhangyuu@gall.me” } ! 修改后的文文档: { “_id”:ObjectId("52c3c518498a9646a48133a2"), “name”:“zhangyu”, “email”:[ “zhangyuu@gall.me”, “uuzhangyu@gmail.com” ] }
{"_id": ObjectId(“52610458e4b0975542d34753”), name:”zhangyu”…} 0 1 2 3 4 5 Machine 6 7 PID 8 9 10 INC 11
Time
Time:时间戳 Machine:一一般是机器主机名的散列值,确保了不同主机生生成不同的 机器hash值 PID:进程ID,一一台机器不同的mongo进程产生生ID不冲突 INC:自自增计数器,确保在同一一秒内产生生的objectId也不会发现冲 突,允许256的3次方方等于16777216条记录的唯一一性。
Mongodb数据库基础入门(一)
Mongodb数据库基础入门(一)
Mongodb介绍
Mongodb是一个基于分布式文件存储的数据库,由C 语言编写,为WEB应用提供可扩展的高性能数据存储解决方案
Mongodb是一款介于关系型数据库与非关系型数据库之间的产品, Mongodb是不同于以往的如redis、memcached,它是一种叫文档数据库,存储的是文档(bson-->json的二进制化)
特点:
最大的特点是支持查询语言非常强大,内部执行的引擎是JS解释器,把文档存储成bson结构,查询时将文档转换成JS对象文件,并通过熟悉JS语法来操作
同传统数据库比较:
1、传统数据库是结构化数据,有表结构,每一行内容是符合表结构,且列的类型也一样
2、mongodb数据库是以文档形式存储数据,每一个文档都是有自己独特的结构(js对象)与属性、值,因此它没有特定的规范与格式
Mongodb安装
官方网站:
下载最新的stable版本
[root@mingongge ~]# cd /usr/local/src/
[root@mingongge src]# wget /dr/fastdl./linux/mongodb-linux-x86_64-rhel62-3.4.6.tgz
[root@Centos-2 src]# tar zxf mongodb-linux-x86_64-rhel62-3.4.6.tgz
[root@Centos-2 src]# cd mongodb-linux-x86_64-rhel62-
3.4.6
[root@Centos-2 mongodb-linux-x86_64-rhel62-3.4.6]# cd bin/
mongodb学习手册_实例演示
MongoDB学习手册
说明
文档大部分内容来自MongoDB官网网站,仅供学习使用!
目录
MongoDB学习手册 (1)
说明 (2)
一、Mongodb简介 (4)
二、MongoDB特性 (5)
适用场景: (5)
不适用场景: (6)
三、MongoDB的工作方式 (6)
四、MongoDB的下载 (8)
五、MongoDB的安装 (9)
六、MongoDB数据类型 (12)
1. Timestamp类型 (12)
2. ObjectId类型 (12)
3. 数据库关联 (14)
七、GridFS文件系统 (15)
八、索引 (16)
九、主(Master)/从(slave)数据库同步 (20)
1. 建立主/从服务器 (20)
2. 相关参数说明 (21)
3. Slave顶替Master (22)
4. 切换Master/Slave角色 (22)
5. 更新主服务器位置 (22)
十、MongoDB分片和集群 (24)
1. 简单分片实例 (24)
2. 高级分片实例 (29)
十一、数据库基本操作:增查删改 (37)
1. Insert (37)
2. Query (38)
3. Remove (52)
4. Update (53)
十二、Shell控制台 (62)
1. 执行.js文件 (62)
2. –eval (62)
3. 脚本和互动的区别 (62)
十三、安全与认证 (63)
1) 开启安全认证 (63)
2) 添加用户 (64)
3) 认证 (64)
4) 查看用户 (64)
5) 添加普通用户 (64)
6) 添加只读用户 (64)
7) 修改密码 (64)
MongoDB简介菜鸟教程
MongoDB简介菜鸟教程
什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
主要特点
•MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
•你可以在MongoDB记录中设置任何属性的索引(如:FirstName='Sameer',Address='8 Gandhi Road')来实现更快的排序。
•你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
•如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。
•Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
•MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。
•Mongodb中的Map/reduce主要是用来对数据进行批量处理
和聚合操作。
•Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
•Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
MongoDB数据库技术入门
MongoDB数据库技术入门MongoDB是一款非关系型数据库,采用类似于Javascript的BSON格式存储数据,广泛应用于Web、移动应用、物联网等领域。本文将为大家介绍MongoDB的基本概念和使用方法。
一、MongoDB概述
MongoDB由10gen公司于2007年创建,目标是提供一种可扩展的高性能、易使用、可靠的数据库系统。与传统关系型数据库相比,MongoDB具有更好的可扩展性和更加灵活的数据模型。它支持丰富的查询语言,并具有高效的读写速度,在大数据处理方面有着很好的表现。
MongoDB的特点有:
1. 高可扩展性:支持集群分布式部署,支持数据分片和自动负载均衡。
2. 易用性:MongoDB采用类似于Javascript的BSON格式存储数据,具有很好的可读性和易用性。
3. 数据模型灵活:MongoDB没有固定的模式,数据结构不需
要使用预先定义的模式,可提供更加灵活的数据模型。
4. 高性能:MongoDB支持并发读写操作和索引,读取速度快。
5. 支持丰富的查询语言:MongoDB支持丰富的查询语言,包
括聚合查询、地理空间查询、文本搜索等。
二、 MongoDB的安装
MongoDB的安装非常简单,只需下载相应的安装包即可。安
装完毕后,在命令行界面键入mongo,即可进入MongoDB的交互式命令行环境。
安装完毕后,需要配置环境变量。在Windows环境下,可将mongod.exe所在路径加入PATH中,使得mongod命令可直接在
命令行中使用。
三、 MongoDB的基本操作
mongodb 详细语法
mongodb 详细语法
MongoDB是一个非关系型数据库,它使用BSON(二进制JSON)格式存储数据。它的语法与传统的SQL语法有所不同。以下是MongoDB的一些详细语法:
1. 插入文档:
使用insert()方法向集合中插入文档。
示例,db.collection.insert({key1: value1, key2: value2, ...})。
2. 查询文档:
使用find()方法从集合中查询文档。
示例,db.collection.find({key: value})。
3. 更新文档:
使用update()方法更新集合中的文档。
示例,db.collection.update({key: value}, {$set: {newkey: newvalue}})。
4. 删除文档:
使用remove()方法从集合中删除文档。
示例,db.collection.remove({key: value})。
5. 聚合操作:
使用aggregate()方法执行聚合操作,如求和、计数、分组等。
示例,db.collection.aggregate([{$group: {_id: "$key", total: {$sum: "$value"}}}])。
6. 索引操作:
使用createIndex()方法创建索引,提高查询效率。
示例,db.collection.createIndex({key: 1})。
7. 条件查询:
使用$gt(大于)、$lt(小于)、$in(包含)、$or(或)
等条件查询文档。
示例,db.collection.find({key: {$gt: value}})。
mongodb基本操作笔记
mongodb基本操作笔记
MongoDB的基本操作笔记如下:
1. 数据库操作:
创建数据库:如果数据库不存在,则创建数据库,否则切换到指定的数据库。
查看所有库:使用命令`show dbs`查看所有库。
删除数据库:先切换到库下,然后使用命令`()`删除当前库。
2. 集合操作:
创建集合:当第一个文档被创建时,集合就会被创建。
查看所有集合:在特定数据库下,使用命令`show collections`查看所有集合。
删除集合:使用命令`_()`删除集合。
3. 文档操作:
插入文档:使用命令`_(document)`将文档插入到集合中。
查询文档:使用命令`_()`查询集合中的所有文档。
更新文档:使用命令`_(query, update_statement)`更新符合条件的文档。删除文档:使用命令`_(query)`删除符合条件的文档。
4. 索引操作:
创建索引:使用命令`_(index_spec)`创建索引。
查看索引:使用命令`_()`查看集合中的所有索引。
删除索引:使用命令`_(index_name)`删除索引。
5. 其他操作:
聚合操作:使用聚合框架对数据进行处理和分析。
分片操作:通过分片将数据分散到多个服务器上以提高性能和可扩展性。安全操作:设置用户和角色权限,确保数据的安全性和隐私性。
以上是MongoDB的基本操作笔记,希望对你有所帮助。更多详细信息可以咨询计算机专业人士或查阅相关技术文档。
mongoDB简介PPT课件
+∞
51 60 61 +∞
分片如何工作
> db.runCommand({addshard:’shard2’});
> db.runCommand({addshard:’shard3’});
Shard1
Shard2
-∞ 40
41 50
51 60
61 +∞
Shard3
分片功能注意事项
不停机水平切分数据 写数据时自动平衡 命令被路由至(转至)正确的节点
插入
MySQL:
INSERT INOT user (`name`, `age`) values ('foobar',25)
Mongo:
db.user.insert({'name' : 'foobar', 'age' : 25})
'})
删除
MySQL:
DELETE * FROM user
Mongo:
post_id int(11)
tag_id int(11)
Tags
id
int(11)
text
varchar(255)
一到多
{ _id: ObjectID(‘4bd9e8e17cefd644108961bb’), title: ‘mongodb数据库’, url: ’’, author: ’toroy’, tage: [‘数据库’, ’mongodb’, ’索引’], Image: {
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
64位整数
• 64位整数与32位整数一样,在MongoDB控制台使用时,会转义成 64位浮点数
64位浮点数
• MongoDB控制台数字的默认类型,如:{“one”:2.02} {“one”:10}
基本数据类型2
字符串
• 如:{“one”:”Hello World”}
对象id
• 对象id是文档中唯一的12位的ID
在工具下查看数据
MongoVUE设置显示本地时间
基本数据类型
null
• null类型用于表示空值或不存在的字段,如:{“one”:null}
布尔类型
• 布尔类型有两上值,’true‟和’false‟ ,如:{“one”:true}
32位整数
• 在由于mongoDB的控制台使用JS引擎进行输入,而JS仅支持64 位浮点数,所以32位整数将会被自动转义
安装MongoDB
1.拷贝安装文件到任意目录 2.配置环境变量
3.手动创建日志目录和日志文件
4.手动创建数据库目录
安装MongoDB(续)
5.在命令行注册数据库服务,默认端口号27017
• C:\mongodb\bin>mongod --dbpath="C:\mongodb\db" -logpath="C:\mongodb\logs\mongodb.log" --install
文档DBObject、BasicDBObject
• 一个文档就是一个JSON字符串 • 可以把文档看做是一行记录
常用命令
查看用户列表
• db.system.users.find()
删除用户
• db.removeUser('name')
查看所有用户
• show users
查看所有数据库
日期
• 日期类型是从标准纪元(公元1年)开始的始的毫秒数,不存储时区 ,如:{“one”:new Date()}
正则表达式
• 文档键值可以包含正则表达式,其正则表达式采用JS语法来表示 ,如:{“one”:/ho/i}
代码
• 文档中可以包含JS代码 如:{“one”:function(){}}
• {stu_name:/^.*1.*$/}
查询stu_name not like „s%‟
• db.stu.find({ "stu_name" : { "$not" : /^s/i } })
返回某些字段
默认查询是返回所有的字段,类似SQL的select * from xxx,可以限制 仅返回某些字段,类似select xxx,xxx from xxx 仅返回stu_id,stu_name两个字段,以下写法均可,_id字段永远都会 返回
基本数据类型3
二进制数据
• 在mongoDB控制台中不能呈示
数组
• 文档中键值可以表示为数组,但数组并没有严格控制数据内成员的类型 ,数组内成员其类型可以完全不一样,而且,在数组内还可以嵌套数组 • { • "stu_id" : 200, • "stu_name" : "李四", • "stu_age" : 45, • "phone":[110,119,120] • }
• 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] } })
• • • • 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
内嵌文档
• 内嵌文档是将另一个文档当成这个文档中某个键的值,即嵌套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" })
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命令查看更多
卸载MongoDB
1.在命令行下执行mongod –remove 删除注册的服务 2.删除硬盘文件
通过命令行进入数据库
默认会连接test数据库
数据库登陆验证
MongoDB数据库默认是无需登陆的,就是不用账号和密 码也可以使用 如果需要数据库登陆验证,则需要在正常启动之后,先进 入某个数据库,然后在这个数据库下添加一个新用户
MongoDB简介
MongoDB事实上不是芒果的意思,而是超大数据库的含 义 MongoDB不是唯一的NOSQL数据库,但却是最普及的 NOSQL数据库
• 是一个介于关系数据库和非关系数据库之间的产品,是非关系数 据库当中功能最丰富,最像关系数据库的 • 由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储 解决方案 • 支持的数据结构非常松散,是类似json的bson格式,因此可以存 储比较复杂的数据类型 • 最大的特点是他支持的查询语言非常强大,其语法有点类似于面 向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝 大部分功能,而且还支持对数据建立索引
查询stu_name like „%9‟,用正则表达式
• db.stu.find({ "stu_name" : /9$/ })
条件查询数据示例3
查询stu_name like „s%‟
• db.stu.find({ "stu_name" : /^s/i })
查询stu_name like „%1%‟
排除某些字段,返回其他字段,以下除了stu_id和stu_name其他字段 都会返回
• db.stu.find({ }, { "stu_id" : 0, "stu_name" : false })
综合条件查询
• db.stu.find({ "stu_id" : { "$gt" : 20 } }, { "stu_id" : true, "stu_name" : true })
分页查询数据
查询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 })
• db.stu.find().count();
select count(*) from stu where stu_id>20;
查询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运算数组元素顺序可颠倒,一样可以匹配
查询stu_id>20
• db.stu.find({ "stu_id" : { "$gt" : 20 } })
查询stu_id<=20
• db.stu.find({ "stu_id" : { "$lte" : 20 } })
查询stu_name<>”tom” and stu_id>20
• db.stu.find({ "stu_name" : { "$ne" : "tom" }, "stu_id" : { "$gt" : 20 } })
• db. collection名称.drop()
删除当前的数据库
• db.dropDatabase()
来自百度文库 对文档的CRUD操作
增加数据
• db.文档名称.save()
查询数据
• db.文档名称.find()
修改数据
• db.文档名称.update()
删除数据
• db.文档名称.remove()
MongoDB
NOSQL数据库
NOSQL数据库简介
NoSQL,指的是非关系型的数据库 ,意思是不仅仅是 SQL语句 NoSQL数据库的优点
• • • • 可以处理超大量的数据 运行在便宜的PC服务器集群上 击碎了性能瓶颈 操作简单
NoSQL数据库的缺点
• 不支持事务ACID特性 • 不适合复杂数据库设计
条件操作符
$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});
• show dbs
查看所有的collection
• show collections
查看各collection的状态
• db.printCollectionStats()
常用命令2
拷贝数据库
• db.copyDatabase('mail_addr','mail_addr_tmp')
删除collection
Mongo数据库服务器
• 相当于普通数据库的服务器
数据库DB
• 相当于一个MYSQL或者SQLSERVER数据库 • 无需Create Database之类的语句,直接use 数据库名,不存在的 数据库会自动创建
数据集合DBCollection(也称作名称空间namespace)
• 可以看做是一个普通数据库的表 • 不需要提前创建一个集合,在第一次增加数据的时候会自动创建
消除重复行
select distinct stu_name from stu where stu_name=“simth40” • db.stu.distinct('stu_name',{stu_name:"simth40"});
统计查询
select count(*) from stu;