美文网首页读百遍
MongoDB小结(更新中)

MongoDB小结(更新中)

作者: sleep_NULL | 来源:发表于2015-05-01 15:16 被阅读5066次

    因为即将的工作需要,昨天特地安装并简单学习了MongodDB

    安装的版本是 2.6.9
    学习方式是阅读*** 官方Docs*** 可以在页面OPTIONS里选择pdf然后下载到本地
    系统是win7 64位

    关于安装过程就不多提了,官方Docs里有详细说明,实在碰壁网上也有很多教程可以填坑
    安装的目录是D:\MongoDB
    MongoDB默认的数据库目录是 \data\db,需要自己手动创建这两个文件夹,当然也可以在配置文件中指定其他目录

    配置文件

    Mongo本身没有配置文件,所以要自己手动添加,我将其创建于D:\MongoDB\mongod.cfg下,mongod.cfg文件中对Mongo的log和数据库路径进行配置,内容如下

    logpath=d:\data\log\mongod.log
    dbpath=d:\data\db
    
    设置成windows服务

    然后将其设置成windows服务,在cmd下键入如下命令(注意其中的空格)

    sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\mongod.cfg"
    

    创建成功会有 [SC] CreateService 成功 的提示信息
    若想删除该服务可以键入

    sc delete MongoDB
    
    启动MongoDB

    然后每次开启在cmd下键入

    net start MongoDB
    

    关闭使用

    net stop MongoDB
    

    如果嫌麻烦可以考虑将其设置为开机自启,在之前的添加windows服务中添加 start= "auto",即

    sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\mongod.cfg" start= "auto"
    

    或者手动在
    控制面板>管理工具>服务
    中找到MongoDB修改启动类型
    到此MongoDB的安装配置基本完成
    将MongoDB添加到windows服务是为了更好的启动MongoDB,通过配置的命令行你也可以知道:

    启动MongoDB服务就是启动d:MongoDB\bin*目录下的mongod.exe*

    接下来我们将认识该目录下的另一个重要命令行工具mongo shell,即mongo.exe,我们将使用它进行数据库的简单增删改查(CRUD)来熟悉MongoDB的入门级操作

    启动MongoDB服务之后
    双击mongo.exe(若将d:MongoDB\bin配置到环境变量中可直接在cmd下键入mongo)
    将有类似如下的提示信息:

    2015-05-03T13:38:11.507+0800 Hotfix KB2731284 or later update is not installed,
    will zero-out data files
    MongoDB shell version: 2.6.9
    connecting to: test
    

    其中打印了时间、版本以及当前连接数据库名(即:test)等信息
    启动mongo shell默认进入 test 数据库
    可以键入

    db
    

    查看当前所在数据库名,而键入

    show dbs
    

    将查看所有数据库名
    你会发现并没有test,MongoDB在你往该数据库插入数据前,并没有真正创建该数据库,我们使用

    use mydb
    

    切换到一个新的数据mydb,同样使用 show dbs 你看不到该数据库,键入db,将显示新的数据库名mydb
    接下来介绍几个概念,他们分别与传统的SQL数据库的这些概念一一对应:

    mongo sql
    collection(集合) table(表)
    document(文档) row(行)
    field(字段) column(列)

    翻译不准确的话多多见谅
    MongoDB是面向 文档 存储的nosql数据库,这里的文档主要指json格式类型,而所有的文档都存储在MongoDB数据库的 集合 中,就像SQL数据库中所有的行都存储在表中,MongoDB的每个数据库可以有很多个 集合,就像每个数据库可以有多张表

    接下来我们创建两个文档,在mongo shell中输入

    d1 =  {x: 3, y: 4}
    d2 = {name: "mongo", age: 18}
    

    然后插入到mydb中的test这个集合中

     db.test.insert(d1)
     db.test.insert(d2)
    

    往集合中插入文档使用

    db.集合名.insert(文档)

    在这个过程中,如果集合不存在,MongoDB会隐式地自动创建该集合再进行插入,无需显式地去创建该集合,可以键入

    show collections
    

    查看当前数据库的全部集合,其中有个自动创建的system.indexes集合存储当前数据库下的所有索引
    接下来查看刚才插入数据库的两条记录,键入

    db.test.find()
    

    将会打印刚才插入集合test中的两个文档,并且会自动给每个文档增加一个 _id 键值对
    查询集合中的文档使用

    db.集合名.find()

    你还可以给find增加各种限制,来查询指定的文档
    我们再往其中增加几个文档,来测试find的限制查询

    db.test.insert({name:"bernie",age:23})
    db.test.insert({name:"mike",age:22})
    db.test.insert({name:"andy",age:30})
    db.test.insert({name:"tony",age:25})
    db.test.find()
    

    现在集合打印出了6个文档,我们查找 age > 22 的所有文档的 name,键入

    db.test.find({age: {$gt: 22}}, {name: 1})
    

    将打印

    { "_id" : ObjectId("5545e1d9f26186a27992619e"), "name" : "bernie" }
    { "_id" : ObjectId("5545e208f26186a2799261a0"), "name" : "andy" }
    { "_id" : ObjectId("5545e22df26186a2799261a1"), "name" : "tony" }
    

    三条文档,并且只有只有name而不显示age
    接下来分析 db.test.find({age: {$gt: 22}}, {name: 1})

    query criteria(查询规则) projection(投影)
    {age: {$gt: 22}} {name: 1}

    find的第一个参数是查询规则,即限定查询的条件,容易看出来是代表的是
    age > 22,其中 $gt 是条件操作符代表 大于(greater than),以下附条件操作符的一一映射表

    符号 含义
    $eq =
    $ne !=
    $gt >
    $lt <
    $gte >=
    $lte <=
    $not !
    $in in
    $nin not in
    $or or
    $mod %

    第二个参数投影{name:1}是对结果集的筛选,其中的 1 可以用 true 替换,而如果使用 0false 将会对结果集的投影进行取反,也就是除了name其他都会筛选出来
    键入如下命令进行文档更新

    db.test.update({x:3},{x:100,y:100})
    

    然后键入 db.test.find() 查看刚才的 {x: 3, y: 4} 更新为了 {x:100, y:100}
    update的第一个参数同样是 查询规则,第二个条件是具体修改内容,如下:

    db.集合名.update(查询规则, 修改内容)

    键入如下命令删除文档

    db.test.remove({age:22})
    

    使用 db.test.find() 发现包含 {age:22} 的文档已经删除,删除规则如下:

    db.集合名.remove(查询规则)

    增删改查基本完成

    未完待续!(过两天填索引和bulk的坑)

    相关文章

      网友评论

      本文标题:MongoDB小结(更新中)

      本文链接:https://www.haomeiwen.com/subject/uodbfttx.html