一、DataBase

1、使用与创建数据库

1)、使用数据库(在这里数据库名称统一用testdb)

use testdb

2)、创建数据库,mongodb数据库无需手动创建,如果指定使用的数据库不存在,那么在你插入一条数据时,mongodb会自动创建数据库,collection也是如此,如:

db.testcollection.insert({x:1})

这时会自动创建testdb和testcollection

3)命名规则

  • 大小写敏感;
  • 当mongodb安装在Windows上时,数据库名称不能包含这些字符:/\. "$*<>:|?以及null字符,安装在Unix或Linux上时,不能包含/\. "$及null字符;
  • 长度限制,不能为空并且不超过64个字符。

一、Collection

1、collection是mongodb存储文档的数据集合,与关系型数据库中的表类似

2、创建,如数据库的创建

3、命名规则

  • 应以下划线或字母开头,不可以:
    ○ 包含$
    ○ 空字符串
    ○ 为null
    ○ 以system.prefix开头
  • 如果collection名称包含特殊的字符串,如下划线或以数字开头
//创建与使用特殊collection
 db.getCollection("包含特殊字符的集合名称")
//错误创建与使用
 db.colllection名称

aggregate mongodb 参数 mongodb database_mongodb

  • 长度限制,collection名称+数据库名称+点号(.)的长度不得超过120个字节

4、显示创建collection

mongodb提供了显示创建collection的方法,以便通过用户指定参数创建有限制的collection,方法:

db.createCollection(name,options);
db.createCollection(<name>, { capped: <boolean>,
                              autoIndexId: <boolean>,
                              size: <number>,
                              max: <number>,
                              storageEngine: <document>,
                              validator: <document>,
                              validationLevel: <string>,
                              validationAction: <string>,
                              indexOptionDefaults: <document>,
                              viewOn: <string>,
                              pipeline: <pipeline>,
                              collation: <document> } )

options如下:

参数

值类型

解释

capped

Boolean

可选,为true时,必须指定collection的属性size的大小

autoIndexId

Boolean

可选,为false时,表示不会自动为_id创建索引,

3.2版本后不推荐使用,3.4版本后已移除。

注意:复制集不允许该属性为false

size

number

可选,指定capped为true的collection的最大字节数;

一旦collection达到指定最大字节数,mongodb会将旧文档移除,以腾出空间存放新文档;

该属性只对capped为true的collection起效

max

number

可选,指定collection最大文档数,

当collection达到最大文档数时,mongodb会自动删除最早存入的文档,腾出空间保存新文档;

size属性的优先级比该属性高,即如果collection达到了size,但未达到max,

mongodb依然会删除旧文档,腾出空间保存新文档

storageEngine

document

可选,只适用于WiredTiger存储引擎,这里不作解释,具体可参考官方文档

validator

document

验证器,可选,指定在更新或插入文档时验证文档的规则或表达式,3.2及其以后可用。

注意:

1、只会在更新或插入时验证,已存在但未做更新操作的文档不会进行验证;

2、不能为admin、local、config数据库中collection添加验证器;

3、不能为system.*中的collection添加验证器.

validationLevel

string

验证级别,可选,在更新期间,指定MongoDB如何严格地将验证规则应用到现有文档中,3.2及以后版本可用;

1、“off”,不启用验证;

2、“strict”,默认级别,应用于所有的更新与插入,

3、“moderate”,应用于执行插入的有效文档或更新操作的已有有效文档,不应用于执行更新操作的已有无效文档

validationAction

string

可选,指定对于验证不通过的文档是否以error方式处理,还是以warn方式警告但依然允许插入。

1、“error”,默认,插入或更新失败,不允许插入或更新;

2、“warn”,允许插入或更新,同时生成验证失败的日志记录,

3、validationLevel先于validationAction执行。

indexOptionDefaults

document

可选,允许用户在创建集合时为索引指定一个默认的配置。

3.2及以后版本可用

viewOn

string

源collection或view的名称,但不是完整的名称,不包含数据库名称,

完整名称如:dbname.collectionname,

3.4及以后版本可用

pipeline

array

聚合管道,与聚合查询有关,具体在以后学习聚合查询时会回来解释

collation

document

为collection指定一个针对不同语言的排序规则,3.4及以后版本可用。

collation: {locale: <string>,

caseLevel:<boolean>,

caseFirst: <string>,

strength: <int>,

numericOrdering: <boolean>,

alternate:<string>,

maxVariable: <string>,

backwards: <boolean>}

“locale”为必须项,其他为可选项,具体看collation文档;

1、如果没有明确为索引指定collation,默认使用collection的collation;2、;

3、collation只能在创建collection时指定,一旦指定,无法修改。

有效文档:可通过验证的文档;无效文档:不能验证成功的文档

https://docs.mongodb.com/manual/introduction/

这是我从6月5号开始学mongodb的笔记,有错欢迎在评论中指正。