MongoDB是文档型数据库, 与传统关系型数据库有一些区别
概念关系
database 数据库
collection 集合相当于表
docment 文档 相当于行
index 索引
唯一键
mongodb不支持多个集合连接,即是 table join不支持
mongodb 支持多种数据类型
:
例如:
null 表示空或者不存在的字段
字符串
日期
布尔
数值
正则表达式
数组
对象id (objectID)
一个mongodb中可以建立多个数据库。
"show dbs" 命令可以显示所有数据库的列表
"db" 命令可以显示当前数据库对象或集合
"use"命令,可以连接到一个指定的数据库
文档是一个键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型
最大BSON文档大小为16M字节
_id
字段始终是文档中的第一个字段
mongo命令行工具
--help
显示命令行选项--nodb
在mongo不连接数据库的情况下启动shell。--shell
允许命令 js
默认全局命令
1. `help` 显示帮助。
2. `db.help()` 显示数据库方法的帮助。
3. `db.<collection>.help()` 显示有关集合方法的帮助。collection可以是现有的集合或不存在的集合的名称。
4. `show dbs` 服务器上所有数据库的列表。根据用户权限返回不同的值。
5. `use <db>` 切换当前数据库到<db>
6. `show collections` 当前数据库的所有集合的列表。
7. `show users` 当前数据库的用户列表。
8. `show roles` 当前数据库的所有角色列表,包括用户定义和内置角色。
9. `show profile` 花费1毫秒或更长时间的五个最近的操作
10. `show databases` 所有可用数据库的列表。根据用户权限返回不同的值。
11. `load()` 执行JavaScript文件
database 数据库层命令
1. `db.auth()` 用户身份验证。
2. `db.collection.stats() ` 查看文档的一些信息, 例如填充因子
3. `coll = db.<collection>` 将当前数据库中的特定集合设置为变量 coll, 相当于取别名
例如: 对myCollection使用变量执行操作, coll = db.myCollection, 可以使用别名 调用 coll.find()
3. `db.collection.find() ` 查找集合中的所有文档并返回游标。
4. `db.collection.insertOne()` 将新文档插入集合中。
5. `db.collection.insertMany()` 将多个新文档插入集合中。
6. `db.collection.updateOne()` 更新集合中的单个现有文档。
7. `db.collection.updateMany()` 更新集合中的多个现有文档。
8. `db.collection.save()` 插入新文档或更新集合中的现有文档。
9. `db.collection.deleteOne()` 从集合中删除单个文档。
10. `db.collection.deleteMany()` 从集合中删除文档。
11. `db.collection.drop()` 完全删除或部分删除集合。
12. `db.collection.remove()` 完全删除或部分删除集合。
13. `db.collection.createIndex()` 如果索引不存在,则在集合上创建新索引; 否则,操作无效。
14. `db.getSiblingDB()` 使用此相同连接返回对另一个数据库的引用,而不显式切换当前数据库。这允许跨数据库查询。
增删改查
新增:
db.collection.insert()
db.collection.insertOne()
db.collection.insertMany()
在插入文档时,如果collection不存在则会新建
新建操作默认情况下,如果没有_id
则会创建一个_id
下面的方法也可能插入新的文档:
db.collection.update() 与参数upsert: true一起使用
db.collection.updateOne()与参数upsert: true一起使用
db.collection.updateMany()与参数upsert: true一起使用
db.collection.findAndModify()与参数upsert: true一起使用
db.collection.findOneAndUpdate()与参数upsert: true一起使用
db.collection.findOneAndReplace()与参数upsert: true一起使用
db.collection.save()
db.collection.bulkWrite()
例如:
// 插入一个数据
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "