当前位置:文档之家› MongoDB讲义

MongoDB讲义

• db. collection名称.drop()
删除当前的数据库
• 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格式,因此可以存 储比较复杂的数据类型 • 最大的特点是他支持的查询语言非常强大,其语法有点类似于面 向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝 大部分功能,而且还支持对数据建立索引
相关主题