- 一、非关系型数据库 NoSql not only sql
- 优点:1.高可扩展性 2.分布式计算 3.低成本 4.架构的灵活性,半结构化数据 5.没有复杂的关系
- 缺点:1.没有标准化 2.有限的查询功能(到目前为止) 3.最终一致是不直观的程序
- mongodb 文档存储 redis key-value存储
- 二、MongoDB 简介
- 1.基于分布式,文档存储的非关系型数据库
- 2.MongoDB的数据模型是面向文档的,所谓文档是一种类似JSON的结构,简单理解MongoDB这个数据库中存在的是各种各 样的Json(可以理解为字典)
- 3.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
- 4.特点:
- 模式自由 :可以把不同结构的文档存储在同一个数据库里
- 面向集合的存储:适合存储 JSON风格文件的形式
- 完整的索引支持:对任何属性可索引
- 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
- 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
- 5.三元素
- 数据库(database) 集合(collection) 类似mysql表 文档(Document) 类似mysql行数据 以键值对形式存储
- 三、MongoDB 与 mysql
- SQL术语/概念 MongoDB术语/概念 解释/说明
- database atabase 数据库
- table collection 数据库表/集合
- row document 数据记录行/文档
- column field 数据字段/域
- index index 索引
- table joins 表连接,MongoDB不支持
- 四、mongodb 操作语句
- 1.数据库操作
- 1.查看所有数据库 show dbs; 或者 show databases;
- 2.切换数据库 use 数据库名; (数据库名不存在也不会报错,当在该数据库下创建第一个集合时,自动保存该数据库)
- 3.删除数据库 1.use 数据库名; 2.db.dropDatabase();
- 4.查看当前所在数据库 db;
- 2.集合操作
- 1.创建集合 db.createCollection("集合名")
- 2.查看所有集合 show collections
- 3.删除集合 db.集合名.drop()
- 3.文档操作
- 1.查看集合文档 db.集合名.find() 查看所有文档
- db.集合名.findOne() 格式化查看第一个文档
- db.集合名.find().pretty() 格式化查看所有文档
- () 内可以填查找的条件语句
- 2.添加文档 db.集合名.insert({key:value,key:value...}) 添加一条文档
- db.集合名.insert([{key:value...},{key:value...},...]) 添加多条文档
- 当集合不存在时,自动创建集合并添加文档
- 自动会添加 _id 主键 也可以指定
- db.students.insert([{name:"张三",age:18},{name:"李四",gender:1}])
- 3.删除文档 db.集合名.remove() 报错
- db.集合名.remove({}) 删除集合所有文档
- db.集合名.remove({name:"张三"}) () 内填查找的条件语句 删除集合内有name:"张三"的所有文档
- db.集合名.remove({name:"张三"},{justOne:true}) 只删除集合内第一个有name:"张三"的文档
- 4.修改文档 db.集合名.update({name:"张三"},{name:"李四"}) 把集合内第一条name:"张三"的文档修改为name:"李四" 其他键值对不存在了 破坏文档结构
- db.集合名.update({name:"张三"},{$set:{name:"李四"}}) 把集合内第一条name:"张三"的文档的name修改为"李四" 其他键值对存在 不损坏文档结构
- db.集合名.update({name:"张三"},{$set:{name:"李四"}},{multi:true}) 把集合内所有name:"张三"的文档的name修改为"李四"
- 1.查看集合文档 db.集合名.find() 查看所有文档
- 4.集合的查找
- 1.比较运算符 $gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于 $ne 不等于 等于的话 直接键值对 键:值
- 例如 db.集合名.find({age:{$gt:20}}) 查找年龄大于20的
- 2.逻辑运算符 $and $or
- 例如 db.find({$and:[{name:"张三"},{name;"李四"}]}) 查找name为张三或者李四的 $and 用法相同但是一般不使用,用下面的
- db.find({name:"张三",age:21}) 查找name 为张三 且 年龄为21的
- 3.范围运算符 $in $nin
- db.集合名.find({age:{$in[21,25,29]}}) 查找age是21或25或29的数据
- db.集合名.find({age:{$nin[21,25,29]}}) 查找age不是21或25或29的数据
- 4.限制 $limit 跳过 $skip
- db.集合名.find().skip.limit(2) 跳过前两条文档,拿第三,四条文档 skip 和 limit 顺序可以反,意义相同
- 1.比较运算符 $gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于 $ne 不等于 等于的话 直接键值对 键:值
- 1.数据库操作
mongodb 基本操作
最新推荐文章于 2024-06-10 16:06:35 发布