MongoDB的入门

一、MongoDB数据库的定义:

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

  • 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
  • MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
  • MongoDB三元素: 数据库、集合、文档:
    1). 文档,就是一个对象,由键值对构成,是json的扩展Bson形式 ,如:{'name':'guojing','gender':'男’}
    2). 集合:类似于关系数据库中的表,储存多个文档,结构不固定,如可以存储如下文档在一个集合中 {'name':'guojing','gender':'男'} {'name':'huangrong','age':18} {'book':'shu
    3). 一个mongodb中可以建立多个数据库
    4). 数据库:是一个集合的物理容器,一个数据库中可以包含多个集合
    注意:MongoDB区分类型和大小写; MongoDB的文档不能有重复的键;

二、MongoDB数据库的优缺点:

优点:
  • 文档结构的存储方式,能够更便捷的获取数据,快速,就地更新
  • 内置GridFS,支持大容量的存储,海量数据下,性能优越
  • 动态查询,全索引支持,扩展到内部对象和内嵌数组
  • 查询记录分析,复制(复制集)和支持自动故障恢复
  • 高效存储二进制大对象 (比如照片和视频)
  • 支持复杂聚合
  • 自动分片支持云级扩展性,分片简单

缺点:

  • 不支持事务操作,占用空间过大
  • 没有如MySQL那样成熟的维护工具
  • 无法进行关联表查询,不适用于关系多的数据
  • 复杂聚合操作通过mapreduce创建,速度慢
  • 在删除记录后不会在文件系统回收空间。除非删掉数据库。但是空间没有被浪费

三、MongoDB的下载与安装:

官方文档安装地址:
https://docs.mongodb.com/manual/installation/

Windowns 安装 :
https://www.cnblogs.com/ymwangel/p/5859453.html

四、MongoDB启动服务:

配置文件路径:

  • 配置文件在/etc/mongod.conf
  • 默认端口27017
    启动与退出:
  • 服务端开启:sudo service mongod start
  • 停止服务:sudo service mongod stop
  • 重启服务:sudo service mongod restart
  • 客户端开启:mongo
  • 退出连接:exit 或 ctrl+c

五、MongoDB 数据库的基本操作:

  • 创建数据库:
    use DATABASE_NAME
  • 查看数据库
    查看当前数据库:db
    查看所有数据库:show dbs

MongoDB 中默认的数据库为 test,刚创建的数据库并不在数据库的列表中,要显示它,需要向创建的数据库中插入一些数据。**

  • 删除数据库:
    db.dropDatabase()

删除数据库时需要切换到要删除的数据库,使用上面的命令才可以删除。

六、MongoDB 文档的基本操作:

1. MongoDB 使用 insert() 或 save() 方法向集合中插入文档:
db.COLLECTION_NAME.insert(document)
db.collection.insertOne():向指定集合中插入一条文档数据。
db.collection.insertMany():向指定集合中插入多条文档数据。

例子:

 db.stu.insert({name: 'zhangsan',age:18})
  • 如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
  • 也可以使用 db.col.save(document) 命令插入文档。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

2. MongoDB 删除文档:
MongoDB remove()函数是用来移除集合中的数据,但现在大多使用deleteOne() 和 deleteMany() 方法。

例子:

 db.col.deleteOne({ name: 'zhangsan',age:18 })

例子:

 db.col.deleteMany({ name: 'zhangsan',age:18 })

3. MongoDB 查询文档:
MongoDB 查询文档使用 find() 方法。

  • find() 方法以非结构化的方式来显示所有文档。

  • pretty() 方法以格式化的方式来显示所有文档。
    语法格式:

     db.col.find().pretty()
    

七、MongoDB 逻辑与条件运算:

1. MongoDB 条件运算:
条件操作符用于比较两个表达式并从MongoDB集合中获取数据。
MongoDB中条件操作符有:

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte

例子:

  db.col.find({age : {$gte : 18}})
  db.col.find({age : {$lte : 18}})
  db.col.find({age : {$lt : 18}})
  db.col.find({age : {$gt : 18}})

2. MongoDB 逻辑运算:

  • MongoDB AND 条件

     db.col.find({key1:value1, key2:value2}).pretty()
    
  • MongoDB OR 条件

    >db.col.find(
          {
          $or: [
             {key1: value1}, {key2:value2}
           ]
          }
      ).pretty
    
  • MongoDB AND与OR 条件

    db.stu.find(
        {
            $or:[
                {age:{$gte:18}},
                {gender:1}
            ],
            name:'gj'
        }
    )
    
  • MongoDB In 条件
    使用" in","nin" 判断是否在给出的判断条件内 :与or方法类似。

    db.stu.find(
        {
            age:{$in:[18,28]}
        }
    )
    
  • MongoDB Limit与Skip方法
    limit() 方法 读取指定数量的数据记录
    skip()方法来跳过指定数量的数据

    db.集合名称.find().limit(num)
    db.集合名称.find().skip(num)
    

limit() 方法、Skip() 方法 同时使用,不分先后顺序 表示跳过多少条,返回多少条

  db.stu.find().limit(4).skip(5)
  db.stu.find().skip(5).limit(4)
  • MongoDB sort() 方法
    对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

    #升序
    db.集合名称.find().sort({排序字段:1})
    #降序
    db.集合名称.find().sort({排序字段:-1})
    #根据多个字段排序,先字段的先后顺序排序
    db.集合名称.find().sort({age:-1,gender:1})
    

注意: skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。

  • MongoDB distinct() 方法

    db.集合名称.distinct('去重字段',{条件})
    
  • MongoDB distinct() 方法
    在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段,参数为字段与值,值为1表示显示,值为0不显示

    db.集合名称.find({},{字段名称:0,...})
    
  • MongoDB count() 方法
    表示返回集合中的文档数量,在count()函数中添加条件:

    db.集合名称.find({条件}).count()
    

你可能感兴趣的:(MongoDB的入门)