概念
| SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
|---|---|---|
| database | database | 数据库 |
| table | collection | 数据库表/集合 |
| row | document | 数据记录行/文档 |
| column | field | 数据字段/域 |
| index | index | 索引 |
| table joins | 表连接,MongoDB不支持 | |
| primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |

数据库
数据库的概念跟关系型数据库(如 MySQL)中是一样的。
一个 mongoDB 中可以建立多个数据库。
默认数据库为 db。
命令
show dbs # 查看所有数据库
db # 查看当前连接的数据库
use xx # 连接到 xx 数据库,如果数据库不存在,则创建数据库
集合
集合类似于关系型数据库中的 table。
集合存在于数据库中,没有固定结构,这意味着可以在集合中插入不同的文档,但是一般情况下文档都有一定的关联性。
文档
文档类似于关系型数据库中的 行。
文档是一组 键值对
数据类型
| 数据类型 | 描述 |
|---|---|
| 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 | 正则表达式类型。用于存储正则表达式。 |
操作
查询文档
语法:
db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
例子:
查询所有:
db.chat_calls.find()
按条件查询:
db.chat_calls.find({"machine_id":"GV2_T1","call_uuid":"01QJI91IMKENL3L8A0Q11B5AES00007V"})
只返回具体字段:
db.chat_calls.find({"machine_id":"GV2_T1","call_uuid":"01QJI91IMKENL3L8A0Q11B5AES00007V"}, { _id:0,machine_id:1})
插入文档
语法:
db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.save(document)
例子:
db.chat_calls.insert(
{"machine_id":"test","call_uuid":"test"})
更新文档
语法:
db.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 :可选,抛出异常的级别。
例子:
db.chat_calls.update(
{"machine_id":"test","call_uuid":"test"},
{
$set:{"machine_id":"test111"}
}
)
运算符 $set,将 machine_id 修改为 test111
save() 方法,通过 _id 主键存在则更新,如果不存在则新增。
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
删除文档
db.collection.deleteOne()
db.collection.deleteMany()
语法:
db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>,
hint: <document|string>
}
)
db.collection.deleteMany(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)
例子:
db.chat_calls.deleteOne({"machine_id":"test"})
GridFS
GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。
GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。
GridFS 可以更好的存储大于16M的文件。
GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。
GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。
gridfs = GridFS(db_client.get_database(db_name), collection=collection)
安装
mac 安装
brew tap mongodb/brew
brew install mongodb-community
检验安装完成
mongod -version
作为mac os 的服务启动
brew services start mongodb-community
Docker 安装
docker pull mongo
docker run -di --name=my_mongo -p 27017:27017 mongo
