• MongoDB介绍

  • 发布时间:2016-01-13 13:52 | 作者:yc | 来源:互联网 | 浏览:1200 次
  • MongoDB介绍

    Mongo最大年夜的特征是他支撑的查询言语十分强壮,其语法有点相似于面向目标的查询言语,的确能够完成相似联系数据库单表查询的绝大年夜部分功用,并且还支撑对数据树立索引

    一、道理简介

    MongoDB是一个介于联系数据库和非联系数据库之间的商品,对错联系数据库当奸淫能最丰盛,最像联系数据库的

    他支撑的数据布局十分松懈,是相似json的bjson格局,因而能够存储对照繁杂的数据类型

    1.新的词汇

    (1)文档 document 相称于javascript的document 在法度榜样中能够理解为目标

    比如: {“name”:”乔布斯”,”age”:53}

    上述比如是一小我的目标(Steve Jobs!!!)姓名是“乔布斯”,年纪是53,这等于一个文档相似于咱们联系型数据库中的一行

    (2)召集 collection 一组文档被称作召集,相似于联系型数据库表

    2.新的器械

    (1)无形式

    召集是无形式的,不像联系型数据库相同,订好了几列,那么统统数据都是相同列,相同类型

    比如: {“name”:”乔布斯”,”age”:53}

    {“company”:”psychcn”}

    上述比如是一个召集,它傍边的文档能够是松懈的,不固定的

    可是这么做的话,数据的阐发会很难做,以是说从数据库筹划的视点,不主张将不合类型的文档放入一个召集

    (2)ObjectId

    在每个文档天生时,要是不指定,MongoDB会默许给当前文档参加一个值“_id”,

    比如: {“name”:”乔布斯”,”age”:53} 在数据库中保留后将变为

    {

    “_id”: ObjectId(“4df80f149fd44d”),

    “name”:”乔布斯”,

    “age”:53

    }

    ObjectId在单个召集中仅有相似于咱们的主键可是它的天生和添加彻底是MongoDB提咱们做,

    咱们不必思虑自增和重复以是在散播式开拓中上风很高,MongoDB生来等于为了处置惩罚散播式疑问而存在的

    ObjectId的天生规矩

    Object为12位数字

    0 1 2 3 4 5 6 7 8 9 10 11

    时 间 戳 机械 PID 计数器

    3.BSON

    MongoDB的文档相似于JSON,在观点是也是相同的

    可是JSON的表现才能有限,例如数据类型,JSON只要null,布尔,数字,字符串,数组和目标几种类型

    以是MongoDB在JSON的根基上添加了一些器械(具体参阅官方文档)

    3.筹划比如

    咱们计整洁个门生,课程两个召集

    |———————–|

    | db.students |

    |name:”门生1″ |

    |address: |

    | |

    | |—————–| |

    | |address:”和平西桥”| |

    | |city:”北京” | |

    | |province:”北京” | |

    | |postcode:”″| |

    | |_________________| |

    |scores: |

    | for_course: |

    | grade:4.0 |

    | |

    | for_course: |

    | grade:3.0 |

    |_______________________|

    |——————www.000888.com—–|

    | db.courses |

    | |

    | |————| |

    | |name:”语文” | |

    | |____________| |

    | |

    | |————| |

    | |name:”数学” | |

    | |____________| |

    |_______________________|

    一、操作运用

    1.添加

    MongoDB介绍

    拿之前筹划好的student举例

    db.student.insert({“name”:”门生2″});

    2.删去

    db.student.remove();

    将会删去student召集中统统文档

    要是依照前提

    db.student.remove({“name”:”门生1″});

    将会删去统统name为门生1的文档

    要是要悉数删去召集,那么运用

    db.drop_collection(“student”)要比remove快的多,可是这么会将召集彻底删去,包孕索引

    3.更新

    (1) 文档替换

    $inc

    用新的文档更新现有文档,相称于形式的篡改运用文档替换具体访候书26页

    (2) 改动器

    db.student.update({ “name” : “门生1″ },

    { “$set”: { “name” : “门生3″ } })

    4.查询

    (1) 悉数回来

    select * from student

    db.student.find();

    (2) 指定回来某一项

    select name from student

    db.student.find({} ,{ “name” : 1 })

    此刻除了name被回来,_id也被回来,能够具体设置让_id不回来

    (3) 依照前提回来

    select * from student where name=’门生1′

    db.student.find({“name”,”门生1″})

    (4) 查询前提

    小于 “$lt”

    小于即是 “$lte”

    大年夜于 “$gt”

    大年夜于即是 “$gte”

    比如,按年纪查找门生,找出18-30岁的门生

    select * from student where age >= 18 and agedb.student.find({ “age” : { “$gte” : 18 , “$lte” : 30 } })

    或许OR “$in”

    select * from student where age in (18,19,20)

    select * from student where age=18 or age =19 or age = 20

    db.student.find({ “age” : { “$in” : [ 18 , 19 , 20 ] } })

    否NOT “$not”

    select * from student where age use admin

    >db.addUser(“abc”,”123″)

    2.发动时参加安然验证

    –auth

    五、其余

    1.写入道理

    先写入内存,再写入oplog,当抵达指准时候后,将数据写入硬盘

    在散播式状况下,宕机神马的,都不怕可是单机数据靠得住性不太好,不过,MongoDB官方在1.8版对付单机靠得住性出台一个处置惩罚规划

    要是在发动MongoDB时加上–dur 则MongoDB 会在进行写操作前记www.sky123.org一份日志,这和在其余一些数据库中的binlog 相似,在MongoDB 数据文件毁坏的环境下,能够运用此日志来进行康复据说其对功能的影响不大年夜

    2.一些需求把稳的器械

    (1) 发动时加上 –auth来包管数据库有需要安然拜访

    (2) 要是安然需求,那么最佳给数据库绑定ip,运用 –bindip

    (3) 数据库发动时,会发动一个大略的http效劳,作为监控状况运用,端口号比运用的端口大年夜1000,例如默许27017的http端口就在28017 要是不需求此效劳,能够运用–nohttpinter-face

    3.客户端器械

    1.MongoVUE.付费器械,我没运用过

    2.Rockmongo 相似于phpmyadmin的器械,我感觉极好用,下载windows版后,会自带一个nginx效劳对中文支撑极好

    原先官方的自带器械就极好了

    六、附录

    怎么装配和运用MongoDB

    1.装配

    Windows和linux皆可从官网下载zip或tar.gz包,解压,到bin目录即可,不需求装配

    2.发动

    发动前必然要树立一个数据库寄存目录

    新建一个文件夹

    mongod –dbpath 数据库目录 –port 效劳监听端口,默许27017 –fork 关照进程措施运转 –auth 需求安然验证 –bindip 绑定ip

    其间–dbpath是有需要,其余项均可酌情思虑

    3.bin目录中文件说明

    mongo 客户端器械,一路也是一个shell,能够运转javascript

    mongod 数据库效劳主文件

    mongodump 数据库备份器械

    mongoexport 数据库导出器械,能够导json和csv格局

    mongoimport 数据库导入器械

    mongorestore 数据库康复器械

    mongostat 数据库监控器械

    mongofiles 用户导入导出GirdFS文件器械

    4.典范

    用一个cmd发动数据库效劳,一个发动客户端毗连

    (1)发动效劳端

    Windows下进入bin目录

    mongod –dbpath D:/data –port 27017 –auth

    (2)运用客户端毗连

    mongo

    use test //切换到数据库

    db.auth(“abc”,123) //参加没有参加–auth能够纰漏这一步

    七、停止语

    上述文档等于我自2011年6月8日至2011年6月15日研讨MongoDB的重要效果,有一部分我没有太搞理解确当地我没有讲,例如分片现在来讲我感觉咱们不太需求进行分片,能够当数据激增时再运用

  • 相关内容

友情链接: