mongodb 基本操作

本文介绍了NoSQL数据库的优点和缺点,并重点讲解了MongoDB这一非关系型数据库的基础知识,包括其数据模型、特点以及基本的操作命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 一、非关系型数据库  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修改为"李四"
    • 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 顺序可以反,意义相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值