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()
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,898评论 2 89
  • 一、MongoDB简介 1.概述 ​ MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WE...
    郑元吉阅读 974评论 0 2
  • 一、MongoDB介绍 1、NoSQL:非关系型数据库 在php的世界里,常见的非关系型数据库有memcached...
    宠辱不惊丶岁月静好阅读 629评论 0 3
  • 简介 MongoDB 是一个基于分布式文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WE...
    大熊_7d48阅读 36,039评论 1 9
  • NoSql数据库优缺点 在优势方面主要体现在下面几点: 简单的扩展 快速的读写 低廉的成本 灵活的数据模型 在不足...
    dreamer_lk阅读 2,705评论 0 6