关于mongoDB(4.0版本)
不适合MongoDB的场景
如果业务中存在大量复杂的事务逻辑操作,则不要用MongoDB数据库。
如果以下有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择MongoDB绝不会后悔。
应用特征Yes / No
应用不需要事务及复杂 join 支持必须 Yes新应用,
需求会变,数据模型无法确定,想快速迭代开发?
应用需要2000-3000以上的读写QPS(更高也可以)?
应用需要TB甚至 PB 级别数据存储?
应用发展迅速,需要能快速水平扩展?
应用要求存储的数据不丢失?
应用需要99.999%高可用?
应用需要大量的地理位置查询、文本查询?
MongoDB 安装

- 如果你选择不将 MongoDB 配置为服务,请取消选中 Install MongoD as a Service。
- MongoDB 4.0 已经不需要像以前版本那样输入一堆命令行来将 MongoDB 配置成 Windows 服务来自动运行了
- mongoose 是操作 MongoDB 的一个对象模型库;它封装了MongoDB对文档操作的常用处理方法(增删改查),让 NodeJS 操作 Mongodb 数据库变得快捷灵活。
- MongoDB Server 启动时会调用 mongod.cfg 配置文件,所以要调整配置,直接按照官方文档里的说明修改该文件就行。
net start mongodb //启动mongodb服务 默认端口号27017
打开浏览器,范围地址http://127.0.0.1:27017/,可看到如下信息
It looks like you are trying to access MongoDB over HTTP on the native driver port.
集合:集合就是 MongoDB 文档组,类似于关系数据库中的表格。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
{"site":"www.runoob.com","name":"菜鸟教程","num":5}
MongoDB 数据类型
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。
MongoDB 相关命令
通过shell连接MongoDB的服务 mongo
MongoDB的默认数据库为"db",该数据库存储在data目录中。
"show dbs" 命令可以显示所有数据的列表。
use DATABASE_NAME //链接到数据库,如果不存在则创建数据库,否则切换到指定数据库
db //显示当前数据库对象或集合。
show dbs //显示所有数据库
db.表名称.insert( {“name”:”小明”} ) //如果没有这个表就会新建,然后插入数据 MongoDB默认数据库名为test,如果你没有创建新数据库,集合将存放在test数据库中
db.表名称.find() //查看数据
db.表名称.find({userid:”路人5”}) //在命令行中,双引号可能存在不可用情况,可以使用` 符
查询并显示的条数有限,根据提示 输入 it 查看更多。
//删除数据库
use runoob switched to db demo01 //切换到数据库demo01
db.dropDatabase(){ “dropped”:”runoob”, ”ok”:1 } //执行删除
//删除集合
db.collection.drop()
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。