本文是构建CentOS+Nginx+Mongodb+Node之Mongodb篇知识的整理。
0.参考
- 1.茅坑里的小石头-简书:https://www.jianshu.com/p/
1.MongoDB简介
- MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2.MongoDB的基本应用
一个mongodb中可以建立多个数据库。MongoDB的默认数据库为”db”,该数据库存储在data目录中。MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
2.1mongo命令
- 1.show dbs 显示所有数据库。
- 2.db 显示当前数据库或集合。
- 3.use dataName(数据库名称应当小写) 连接到指定数据库,不存在则创建。
- 4.db.dropDatabase() 删除当前数据库
- 5.db.collection.drop() 删除当前集合
- 6.insert() 或 save() 方法向集合中插入文档,语法如下:
- db.COLLECTION_NAME(变量).insert(document)
- db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
- 7.MongoDB 使用 update() 和 save() 方法来更新集合中的文档
- update() 方法用于更新已存在的文档。语法格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。 - save() 方法通过传入的文档来替换已有文档
1
2
3
4
5
6
7
8
9
10db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
document : 文档数据。
writeConcern :可选,抛出异常的级别
- update() 方法用于更新已存在的文档。语法格式如下:
- remove() 方法的基本语法格式如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18db.collection.remove(
<query>,
<justOne>
)
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。 - MongoDB 查询数据的语法格式如下:
1
2
3
4
5
6>db.COLLECTION_NAME.find()
find() 方法以非结构化的方式来显示所有文档。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()2.2mongodb默认设置
- 1.有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
- 1.shell连接
- 1.mongodb://localhost
- 2.mongodb://username:password@hostname/dbname
3.安装
- 1.配置mongodb-org
- 2.yum install -y mongodb-org
- 3.systemctl start mongod
- 检查log验证:tail /var/log/mongodb/mongod.log
- 4.systemctl enable mongod
- 5.坑:
- mongodb目前遇到不正常关闭较多
- 建议在重启服务器之前先systemctl stop mongod,重启后手动开启服务。
- Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted
- 删除/tmp/mongodb-27017.sock。
- ERROR: child process failed, exited with error number 14
- 到dbpath里边的mongod.lock文件,并删除mongod.lock,删掉原来log目录里的所有文件就可以
- Failed global initialization: FileNotOpen: Failed to open “/var/log/mongodb/
- 权限问题
- chown -R mongod:mongod /var/lib/mongo
- https://www.jianshu.com/p/36150c09838b ;systemctl 指令
- mongodb目前遇到不正常关闭较多
4.mongoose的使用
- db.js
1 | const mongoose = require('mongoose'); |