建设部网站查资质6,深圳永久免费网站建设哪个好,wordpress 分类标签云,仓库管理系统需求分析MongoDB入门
1、基本概念
NameDescripe文档文档是 MongoDB 中数据的基本单位#xff0c;是一组有序键值的集合。类似于关系数据库中的一行行数据。通常以键—值对的形式存在于数据库中。一般情况键是字符串类型#xff0c;区分大小写、并且不能包含重复的键#xff08;唯一…MongoDB入门
1、基本概念
NameDescripe文档文档是 MongoDB 中数据的基本单位是一组有序键值的集合。类似于关系数据库中的一行行数据。通常以键—值对的形式存在于数据库中。一般情况键是字符串类型区分大小写、并且不能包含重复的键唯一性。集合集合是一组MongoDB文档的组合类似于关系型数据库例如 MySQL中的数据表。集合没有固定的结构可以插入不同格式或类型的数据。数据库MongoDB使用数据库对集合进行分组。一个MongoDB实例可以承载多个数据库每个数据库有零个或多个集合。
2、数据类型
数据类型描述String字符串类型是最常用的数据类型不过在 MongoDB 中只有 UTF-8 编码的字符串才是合法的Integer整型用于存储数值。根据您使用服务器的不同整型可以分为 32 位或 64 位两种Boolean布尔型用于存储布尔类型的值true/falseDouble双精度浮点型用于存储浮点型小数数据Min/Max keys将一个值与 BSON 元素的最低值和最高值相对比Array数组类型用于将数组、列表或多个值存储在一个键中Timestamp时间戳记录文档修改或添加的具体时间Object用于内嵌文档Null用于创建空值Symbol符号该数据类型于字符串类型类似不同的是它一般用于采用特殊符号类型的语言Date日期时间用 UNIX 时间格式来存储当前日期或时间您可以创建 Date 对象并将 date、month、year 的值传递给 Date 对象来指定自己的日期时间Object ID对象 ID用于创建文档的 IDBinary Data二进制数据用于存储二进制数据Code代码类型用于在文档中存储 JavaScript 代码Regular expression正则表达式类型用于存储正则表达式
Object ID
Object ID 类似于关系型数据库中的主键 ID在 MongoDB 中 Object ID 由 12 字节的字符组成其中
前 4 个字节表示当前的 Unix 时间戳之后的 3 个字节是当前设备的机器标识码再之后的 2 个字节是 MongoDB 服务器的进程 id最后 3 个字节为计数器计数器的起始值随机获得。
601e2b6b aa203c c89f 2d31aa↑ ↑ ↑ ↑
时间戳 机器码 进程id 计数器Timestamp
Timestamps时间戳类型用来在 MongoDB 的内部使用与 Date 类型不同Timestamps 由一个 64 位的值构成其中
前 32 位是一个 Unix 时间戳由 Unix 纪元1970.1.1开始到现在经过的秒数后 32 位是一秒内的操作序数。
在一个 MongoDB 实例中时间戳是唯一的而且主要在 MongoDB 内部使用在应用开发中您可以使用 Date 类型来定义时间日期。
Date
Date 类型是一个 64 位的对象其中存放了从 Unix 纪元1970.1.1开始到现在经历的毫秒数Date 类型是有符号的负值则表示 1970.1.1 之前的时间。
3、创建数据库
在MongoDB中使用use命令来创建数据库如果该数据库不存在则会创建一个新的数据库如果该数据库已经存在则将切换到该数据库。使用use命令创建数据库的语法格式如下
use database_name;例如创建一个名字为mg_pp的数据库使用如下命令
use mg_pp;
# 出现如下语句说明数据库创建成功
switched to db mg_pp数据库创建成功后您可以使用db命令来查看当前选择的数据库如下所示
db;
# 输入db会显示当前选择的数据库
mg_pp显示MongoDB中所有的数据库使用如下命令
show dbs;
# 这个命令只会显示MGDB中所有不为空的数据库新创建的数据库中没有数据故不显示这个时候就需要向新创建的数据库中插入数据
db.users.insertOne({ username : panpan , password : 123123});
# 其中users是集合类似于关系型数据库中的表
# 插入的json字符串即是文档对应关系型数据库表中的一行记录插入数据之后当我们再次执行show dbs;就会发现我们新创建的数据库了。
[{empty: false,name: admin,sizeOnDisk: 151552},{empty: false,name: config,sizeOnDisk: 110592},{empty: false,name: local,sizeOnDisk: 73728},# 这个就是新建的数据库 mg_pp{empty: false,name: mg_pp,sizeOnDisk: 8192}
]4、删除数据库
删除当前数据库的语法格式
db.dropDatabase();要删除指定的数据库之前需要先进入该数据库
use test_delete_db;
# 删除数据库
db.dropDatabase();
# 检查是否删除成功
show dbs;5、常用命令
5.1、创建集合
MongoDB创建集合数据表语句如下
db.createCollection(name, options);name: 要创建的集合名称options: 可选参数, 指定有关内存大小及索引的选项可选值如下表所示
字段类型描述capped布尔可选如果为 true则创建固定集合固定集合是指有着固定大小的集合当达到最大值时它会自动覆盖最早的文档注意如果该值为 true则必须指定 size 参数autoIndexId布尔可选如为 true则自动在 _id 字段创建索引默认为 false注意MongoDB 3.2 之后不再支持该参数size数值可选为固定集合指定一个最大值即字节数如果 capped 为 true则需要指定该字段max数值可选指定固定集合中包含文档的最大数量
使用show collections命令或者show tables命令来查看数据库中的集合
show collections;
show tables;创建固定集合“mycol”整个集合空间大小为 102400 KB, 文档最大个数为 1000 个
db.createCollection(mycol, { capped : true, size : 102400, max : 1000 } )虽然 MongoDB 中提供了单独的创建集合的方法但通常我们不需要手动创建集合因为当您在插入文档时MongoDB 会自动创建集合。
5.2、删除集合
删除集合的语法如下
db.collection_name.drop()collection_name 需要删除集合的名称
drop不需要携带任何参数
5.3、插入文档
使用insert()插入文档
# 插入一条文档
db.users.insertOne({ username : panpan , password : 123123});
# 批量插入文档
db.users.insertMany([{ username : panpan111 , password : 111},{ username : panpan222 , password : 222}])
# 插入之后使用find()进行查看
db.users.find();5.4、查询文档
使用find()查询文档语法如下
db.collection_name.find(query, projection);query可选参数使用查询操作符指定查询条件projection可选参数使用投影操作符指定返回的键。查询时若要返回文档中所有键值只需省略该参数即可默认省略
pretty() 方法来格式化查询到的结果:
db.collection_name.find(query, projection).pretty()findOne()方法只能返回一个查询到的文档
db.collection_name.findOne(query, projection)投影操作
db.collection_name.find(query,{key1:1, key2:1, ...})query可选参数使用查询操作符指定的查询条件key1、key2、…为要查询或者隐藏的字段当值为 1 时表示显示该字段值为 0 时表示隐藏该字段。
5.5、更新文档
update() 方法用于更新现有文档中的值其语法格式如下
db.collection_name.update(query,update,{upsert: boolean,multi: boolean,writeConcern: document}
)queryupdate 的查询条件类似 SQL 中 update 语句内 where 后面的内容updateupdate 的对象和一些更新的操作符如 、 、 、inc…等也可以理解为 SQL 中 update 语句内 set 后面的内容upsert可选参数默认值为 false用来定义当要更新的记录不存在时是否当作新记录插入到集合中当值为 true 时表示插入值为 false 时不插入multi可选参数默认值为 false用来表示只更新找到的第一条记录当值为 true 时则把按条件查出来的多条记录全部更新writeConcern可选参数用来定义抛出异常的级别。
save() 方法可以使用传入的文档来替换已有文档若 _id 主键存在则更新已有文档若 _id 主键不存在则作为新数据插入到集合中。
语法格式如下
db.collection_name.save(document,{writeConcern: document}
)document : 文档数据writeConcern :可选抛出异常的级别。
5.6、删除文档
delete() 方法从集合中删除文档语法格式如下
db.collection_name.delete(query,{justOne: boolean,writeConcern: document}
)query可选参数定义要删除文档的条件justOne可选参数如果设为 true 或 1则只删除一个文档如果不设置该参数或使用默认值 false则删除所有匹配条件的文档writeConcern可选参数定义抛出异常的级别。
eg:
# 创建一些测试数据db.course.insertMany([{title: MongoDB教程,author: 编程帮,url: http://www.biancheng.com/mongodb/index.html},{title: HTML教程,author: 编程帮,url: http://www.biancheng.com/html/index.html},{title: C#教程,author: 编程帮,url: http://www.biancheng.com/csharp/index.html}])
# 删除title为“MongoDB教程”的文档
db.course.deleteOne({title:MongoDB教程})