mongodb基本操作

Posted 薄荷味日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb基本操作相关的知识,希望对你有一定的参考价值。

一、MongoDB特点

  1. 模式自由 :可以把不同结构的文档存储在同一个数据库里
  2. 面向集合的存储:适合存储 JSON风格文件的形式
  3. 完整的索引支持:对任何属性可索引
  4. 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
  5. 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
  6. 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
  7. 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
  8. 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
  9. Mongodb 将数据存储为一个文档,数据结构由(key —> value)键值对组成
  10. MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),类似于JSON对象

二、操作mongodb数据库

  1、创建数据库

    语法: use 数据库名

    注意:如果数据库不存在则创建数据库,否则切换到指定数据库。

       如果新创建的数据库不在列表内,要显示它,需要插入一些数据

  2、查看所有数据:

    show dbs

  3、查看当前正在使用的数据库

    a、db

    b、db.getName()

  4、查看当前数据库信息

    db.stats()

  5、断开连接

    exit

  6、删除数据库

    db.dropDatabase()

三、集合操作

  1、创建集合 

    db.createCollection(name,options)

 

参数 类型 描述
Name String 要创建的集合的名称
Options Document 用于指定集合的配置

  2、查看当前数据库下有哪些集合

    show collections

  3、删除集合

    db.集合名称.drop()

  3、文档插入

    db.集合名称.insert([文档1,...})

    插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

  4、文档更新

db.集合名称.update(
   <query>,   
   <update>,
   {
    upset: <boolean>,    
    multi: <boolean>,
       writeConcern: <boolean>  //抛出异常的级别,一般不写
  }
)       
  • 参数query: 查询条件,类似sql语句update中where部分
  • 参数update: 可选,更新操作符,($set, $inc)等,$set直接更新,$inc在原有的基础上累加后更新,类似sql语句update中set部分
  • 参数multi: 可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新

  5、文档查找

1.方法find():查询
  db.集合名称.find({<key:1>,})  // key:要显示的字段,1表示显示
2.方法findOne():查询,只返回第一个
  db.集合名称.findOne({条件文档})
3.方法pretty():将结果格式化
  db.集合名称.find({条件文档}).pretty()

  6、查询条件操作符

  • 等于,默认是等于判断,没有运算符
  • 小于$lt
  • 小于或等于$lte
  • 大于$gt
  • 大于或等于$gte
  • 不等于$ne

  7、范围运算符

    使用‘$in’,‘$nin‘ 判断是否在某个范围内

  8、逻辑运算符

    a、AND条件

      db.集合名.find({条件1,条件2, ... })

    b、OR条件

      db.集合名.find({$or[{条件1},{条件2} ,.. .}])

    c、AND和OR联合使用

db.集合名.find{
    {
         条件1,
         条件2,
         $or:[{条件3},{条件4}]
    }     
}        

  9、支持正则表达式

    使用 / / 或 $regex 编写正则表达式

例如:查询姓黄的学生
db.stu.find({name:/^黄/})
db.stu.find({name:{$regex:‘^黄‘}}})

  10、limit 、skip

a、limit(): 用于读取指定数量的文档
  语法:db.集合名称.find().limit(NUMBER)

b、skip():用于跳过指定数量的文档
  语法:db.集合名称.find().skip(NUMBER)

c、limit() 与 skip() 联合使用
   通常用这种方法实现分页功能
   例如:db.stu.find().skip(3).limit(4)

  11、排序

语法:db.集合名称.find().sort({字段:1,...})
  •  参数1为升序排列
  •  参数-1为降序排列

  12、文档删除

db.集合名称.remove(
   <query>,
   {
     justOne: <boolean>
   }
)
  • 参数query:可选,删除的文档的条件
  • 参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

四、文档操作

 

五、SQL与MongoDB之间数据对比

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

 

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键



以上是关于mongodb基本操作的主要内容,如果未能解决你的问题,请参考以下文章

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

mongodb关联查询

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

无法在 MongoDB(猫鼬)文档中追加数组