MongoDB 学习笔记
MongoDB是由C++语言编写的,是一个基于分布式文件存储、介于关系型数据库和非关系型数据库之间的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB将数据存储为一个文档,数据结构由键值对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。
相关概念:
-
数据库
数据库是一个集合的物理容器。一个单一的MongoDB服务器通常具有多个数据库。
-
集合
集合是一组MongoDB的文档。它与关系型数据库中的表类似。集合存在于数据库中,无固定模式,即集合中的文档可以具有不同的字段。通常情况下,将具有相关类型和目的的文档存储在一个集合中。
-
文档
文档是一组键值对。它与关系型数据库中表的一行记录类似,不同的是文档具有动态模式。动态模式是指,存储在同一个集合中的文件不必具有相同的文档字段或结构,并且相同的字段在不同的文档中也可以存储不同类型的数据。
示例文档:
{
"_id" : {
"$oid" : fa20fb3331b80929ecefe2b0
},
"title" : "蝶恋花",
"content" : "笑渐不闻声渐悄,多情却被无情恼",
"tags" : ["宋词","苏轼","蝶恋花"],
"likes" : 100,
"comments" : [
{
"user" : "俞彦",
"message" : "古人好词,即一字未易弹,亦未易改",
"createdDate" : new Date(2011,1,20,2,15)
},
{
"user" : "俞陛云",
"message" : "絮飞花落,每易伤春,此独作旷达语",
"createdDate" : new Date(2011,1,25,7,45)
}
]
}
在关系型数据库中,上述文档需要设计3张表:articles,tags,comments。
在Windows上安装MongoDB:
从官网下载安装文件并安装,安装路径:D:\MongoDB\Server\3.4
在D:\MongoDB\Data路径下创建db目录,用于存放数据库文件
在D:\MongoDB\Data路径下创建log目录,用于存放日志文件
在D:\MongoDB\Data\log路径下创建mongo.log文件,用于输出日志
-
在D:\MongoDB\Server\3.4路径下创建mongo.conf文件,用于保存配置信息,配置信息如下:
# 数据库路径 dbpath=D:\MongoDB\Data\db # 日志文件输出路径 logpath=D:\MongoDB\Data\log\mongo.log # 是否启用日志文件,默认启用 journal=true # 是否过滤无用的日志信息 quiet=true # 错误日志采用追加模式 logappend=true # 端口号 port=27017
-
注册MongoDB服务
使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:
mongod --config "D:\MongoDB\Server\3.4\mongo.conf" --install --serviceName "MongoDB"
-
启动MongoDB服务
使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:
net start MongoDB
-
停止MongoDB服务
使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:
net stop MongoDB
-
注销MongoDB服务
使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:
mongod.exe --remove --serviceName "MongoDB"
常用操作:
启动MongoDB服务后,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:
mongo
显示如下界面后即可开始进行数据库操作:
1.数据库常用操作:
-
查看数据库操作命令
db.help()
-
查看当前数据库
db db.getName()
-
查看数据库列表
show dbs
-
连接指定数据库,如果指定数据库不存在则创建一个新的数据库。新建的数据库并不会立即显示在数据库列表中,需要进行一些操作(例如:
db.createCollection("user")
)后才能创建成功。use <dbname>
-
删除当前数据库
db.dropDatabase() db.runCommand({"dropDatabase" : 1})
-
查看数据库中的集合列表
db.getCollectionNames() show collections
2.集合常用操作:
-
创建集合
db.createCollection(name, {size : ..., capped : ..., max : ...})
参数 类型 描述 name String 指定要创建的集合的名称 size 整型 (可选)指定上限集合的最大大小(以字节为单位)。如果capped为true,需指定此字段的值。 capped Boolean (可选)如果为true,则启用封闭的集合。上限集合是固定大小的集合,在达到其最大大小时自动覆盖其最旧的条目。如果指定为true,则还需指定size参数。 max 数字 (可选)指定上限集合中允许存在的最大文档数。
在MongoDB 中,不需要显式的创建集合。
当插入文档时,MongoDB 会自动创建集合。
-
删除集合
db.<collectionName>.drop() db.runCommand({"drop", "roles"})
3.文档常用操作:
-
创建文档
db.<collectionName>.insert(document) //3.2以上版本 db.<collectionName>.insertOne(document) //3.2以上版本 db.<collectionName>.insertMany([document], [document]...) db.<collectionName>.save(document)
在插入的文档中,如果不指定
_id
参数,MongoDB会为此文档分配一个唯一的ObjectId。_id
为12个字节长度的十六进制数。12字节划分如下:_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)
如果插入文档的
_id
已经存在,insert()
将不做操作并提示错误,save()
则会修改原来的内容为新内容。 -
删除所有文档
db.<collectionName>.remove({}) //3.2以上版本 db.<collectionName>.deleteMany({})
从一个集合中删除所有文档,使用
drop()
方法删除整个集合,包括索引,然后重建该集合和索引或许会更高效。 -
删除满足条件的所有文档
db.users.remove({"status" : "disabled"}) db.users.deleteMany({"status" : "disabled"})
删除
users
集合中status
字段为disable
的所有文档。对于大量的删除操作,将要保留的文档复制到一个新的集合然后使用
db.<collectionName>.drop()
方法删除原集合或许会更高效。 -
仅删除一个满足条件的文档
db.users.deleteOne({"status" : "disabled"})
使用
db.<collectionName>.remove()
方法并将<justOne>
参数设置为true
或1
.db.users.remove({"status" : "disabled"}, 1) db.users.remove({"status" : "disabled"}, true)
上一篇: ubuntu 安装mongodb
下一篇: 用 php 编写的日历_php基础