简介
monggdb是一个基于分布式,文件存储的NOSQL数据库
由C++编写运行稳定,性能高
目的是为web应用提供可扩展的高性能数据存储解决方案
特点
1.模式自由:可以把不同结构的文档存储在同一个数据库里
2.面向集合的存储:适合存储json风格文件的的形式
3.完整的索引支持:对任何属性可索引
4.复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的
相互复制,复制的主要目的是提供冗余及自动故障转移
5.自动分片:支持云级别的伸缩性;自动分片功能支持水平的数据库集群,可动态
添加额外的机器
6.丰富的查询:支持丰富的查询表达方式,查询指令使用json形式的标记,可轻易
查询文档中的内嵌的对象及数组
7.快速就地更新:查询优化器分析查询表达式,并生成一个高效的查询计划
8.高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
基本操作
1.MongoDB将数据存储为一个文档,数据结构由键值(keyvalue)对组成
2.MongoDB文档类似于json对象,字段值可以包含其他文档,数组,文档数组
sql | mongodb | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 数据库行/文档 |
column | field | 数据库列/域 |
table joins | 无 | 表连接 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
三元素:数据库,集合,文档
文档,就是一个对象,由键值对构成,是json的扩展Bson形式
集合:类似于关系数据库中的表,储存多个文档,结构不固定
数据库:是一个集合的物理容器。
在mongodb中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在集合或者数据库不存在,就会自动创建数据库和集合
指令 | 作用 |
---|---|
show dbs /show databases | 显示所有数据库 |
use 数据库名 | 如果数据库不存在,则创建数据库,否则切换到指定数据库, |
db | 显示当前数据库 |
show collections | 显示当前数据库中所有的集合(表) |
插入指令 | |
db.集合名.insert(doc) | 当前数据库.集合(表).插入文档(必须键值对,如果有多对字典,则insert([{},{}])) |
查询指令 | |
db.集合名.find() | 返回该集合中所有文档 |
db.集合名.find({‘name’=‘zhangsan’}) | 返回所有符合条件的文档,以列表的形势返回 |
db.集合名.findOne() | 返回符合条件的第一个文档 |
db.集合名.find().count()/db.集合名.find().length() | 返回集合长度(文档数) |
修改指令 | |
db.集合名.update(查询条件,新对象) | 默认情况下会使用新对象来替换旧的对象 |
db.stus.update({name:”lisi”},{$set:{age:40}}) | 如果是set则更新,unset则删除值,但不删除键 |
db.集合名.updateMany() | 同时修改多个符合条件的文档 |
db.集合名.updateOne() | 修改第一个符合条件的文档 |
删除指令 | |
db.集合名.remove() | 删除所有符合条件的文档,类似与find,但不同的是如果不传参数会报错 |
db.集合名.deleteOne() | (删一个) |
db.集合名.deleteMany() | (删多个) |
db.stus.remove({}) | 删除所有文档 |
db.stus.drop() | 删除当前数据库的stus表 |
db.dropDatabase() | 删除当前数据库 |