创建数据库
1 | # 格式 |
创建集合
- 创建一个普通的集合
1 | # 格式 |
- 创建一个带参数的集合
1 | # 格式 |
可选参数 | 类型 | 说明 |
---|---|---|
autoIndexId | bool | 默认为 false,如果设置为 true,则会在 _id 字段上自动创建索引 |
capped | bool | 如果为 true 则创建一个固定大小的集合,当其条目达到最大时可以自动覆盖以前的条目。在设置其为 true 时也要指定参数大小 |
size | int | 如果 capped 为 true 则需要指定,指定参数的最大值,单位为 byte |
max | int | 指定最大的文档数 |
插入文档
- 插入 student 文档
1 | > db.student.insert([ |
- 插入 subject 文档
1 | > subject_list = [{"name":"算数"},{"name":"图画"},{"name":"体育"}] |
更新文档
- 根据 _id 更新
1 | # 格式 |
根据 _id 更新会替换之前的文档,而非只更新某个字段。
- 根据筛选项更新
1 | # 格式 |
update 默认只对一个文档更新,更新所有文档需要添加 multi:true。
查询文档
- 查询所有
1 | # 格式 |
- AND 查询
1 | # 格式 |
- OR 查询
1 | # 格式 |
- 条件查询
1 | # 格式 |
条件操作符 | 含义 |
---|---|
$lt | 小于 |
$gt | 大于 |
$lte | 小于等于 |
$gte | 大于等于 |
$ne | 不等于 |
- 模糊查询
1 | # 匹配前缀格式 |
- 数据类型查询
1 | # 格式 |
类型值 | 数据类型 | 类型别名 |
---|---|---|
1 | 双精度型(Double) | double |
2 | 字符串(String) | string |
3 | 对象(Object) | object |
4 | 数组(Array) | array |
5 | 二进制数据(Binary data) | binData |
7 | 对象 ID(Object id) | objectId |
8 | 布尔类型(Boolean) | bool |
9 | 日期(Date) | date |
10 | 空(Null) | null |
11 | 正则表达式(Regular Expression) | regex |
13 | JS 代码(Javascript) | javascript |
14 | 符号(Symbol) | symbol |
15 | 有作用域的 JS 代码(JavaScript with scope) | javascriptWithScope |
16 | 32 位整型数(32-bit integer) | int |
17 | 时间戳(Timestamp) | timestamp |
18 | 64 位整型数(64-bit integer) | long |
-1 | 最小值(Min key) | minKey |
127 | 最大值(Max key) | maxKey |
- 限制查询
1 | # 格式 |
- 跳过查询
1 | # 格式 |
- 排序查询
1 | # 格式 |
- 聚合查询
1 | # 格式 |
可选参数 | 说明 |
---|---|
$match | 查询,跟 find 一样 |
$limit | 限制显示结果数量 |
$skip | 忽略结果数量 |
$sort | 排序 |
$group | 按照给定表达式组合结果 |
聚合表达式 | 说明 |
---|---|
$sum | 计算总和 |
$avg | 计算平均值 |
$min 和 $max | 计算最小值和最大值 |
$push | 在结果文档中插入值到一个数组 |
$addToSet | 在结果文档中插入值到一个数组,但不创建副本 |
$first | 根据资源文档的排序获取第一个文档数据 |
$last | 根据资源文档的排序获取最后一个文档数据 |
文档的关系
- 嵌入式关系
1 | { |
把 subject 文档嵌入到 student 文档中,嵌入式关系比较适合一对一的情况。
- 引用式关系
1 | { |
通过引用 subject 文档的 _id 来与 student 文档建立关系,引用式关系比较适合一对多或者多对多的情况。
创建索引
- 创建一个普通索引
1 | # 格式 |
- 创建一个联合索引
1 | # 格式 |
- 创建一个带参数的索引
1 | # 格式 |
可选参数 | 类型 | 说明 |
---|---|---|
background | Boolean | 建立索引要不要阻塞其他数据库操作,默认为 false |
unique | Boolean | 建立的索引是否唯一,默认 false |
name | string | 索引的名称,若未指定,系统自动生成 |
dropDups | Boolean | 建立唯一索引时,是否删除重复记录,默认 flase |
sparse | Boolean | 对文档不存在的字段数据不启用索引,默认 false |
expireAfterSeconds | integer | 设置集合的生存时间,单位为秒 |
v | index version | 索引的版本号 |
weights | document | 索引权重值,范围为 1 到 99999 |
default-language | string | 默认为英语 |
language_override | string | 默认值为 language |
验证索引
- 验证覆盖索引
1 | # 格式 |
- 验证指定索引
1 | # 格式 |
关联
[[PHP MongoDB封装支持多库链接]]
[[Python 操作MongoDB]]
[[PHP TP5使用MongoDb]]