MongoDB基础知识

一、Mongodb简介

  Mongodb是基于分布式文件存储的数据库,用C++编写;
  Mongodb是nosql(not-only-sql)数据库;
  Mongodb '无状态模式',不用去设计,直接用,存什么东西,取决于前边传什么东西;
  Mongodb 数据库、 集合、 文档组成;
  Mongodb 单表可存档PB级别的数据(1PB = 1024TB 可见数据存储量较大;
  Mongodb 存储数据的格式是类Json,bson格式

二、Mongodb在windows命令窗的简单操作

  1、简单操作

   (1)获取当前的数据库名

>db.getName()
    
   (2)创建数据库或切换数据库
>use dbName
    
   (3)查看当前数据库状态
>db.stats()
    
   (4)帮助命令
>db.help()
    

  2、写入数据

         1)普通数据的添加
     语法:db.tableName.insert({key:value})
        db.student.insert({name:'parry',age:18,sex:'male'})
         2)多维数据对象的添加
    语法:db.tableName.insert({key:{key1:'value1',key2:'value2'}})
        db.student.insert({name:'kuanjun',age:18,sex:'male',home:{province:'Gansu',city:'PingLiang'}})
         3)数组信息的插入
    语法:db.tableName.insert({key:[value1,value2,value3]})
        db.student.insert({name:'Yangkuanjun',age:18,sex:'male',home:{province:'Gansu',city:'PingLiang'},score:[70,80,100]})

  3、数据的查询

         1)笼统方式查询
    语法:db.tableName.find()    //查询数据表的全部数据 select * from tableName
    语法:db.tableName.findOne()   //查询数据表的第一条数据select * from tableName limit 1
    经过查询我们发现之前插入的数据,多个一个字段_id,_idmongodb本身的算法计算的,该_id对应的值‘全球唯一’,类似于我们关系型数据表中的主键ID
    注:_id我们可以自己指定(在insert的时候传入_id即可db.student.insert({_id:1,name:'parry',age:18,sex:'male'})),但是mongodb不推荐我们这样做。
         2)条件查询语句
    条件:Bson对象
    语法:db.tableName.find(条件)
    例:查询集合student中 name = parry的记录信息
    (类似于 select * from student where name='parry'
        db.student.find({name:'parry'}) 
         3)范围查询
    关键字:$gt $lt $gte $lte(依次类似于mysql>  <   >=  <=
    语法:db.tableName.find({key:{'$gt/$lt/$gte/$lte':value}})
    例:查询年龄大于15的学生
       db.student.find({age:{'$gt':15}})
    
               注:关键字$get前后需要用引号,单双都可以
         4)设置多个查询条件(相当于mysqland操作)
    语法:db.tableName.find({条件,条件,条件})
    例:查询姓别是男,年龄大于15的数据
     db.student.find({sex:'male',age:{'$gt':15}})
    
         5)多维字段的查询
    语法:db.tabeName.find({'key.name':'value'})
       db.tabeName.find({'key.name':{'$gt':'value'}})
       db.tabeName.find({'key1.name':{'$gt':'value1'},'key2.name':{'$lt':'value2'}})
    例:查询home中,city=PingLiang的数据
     db.student.find({'home.city:'PingLiang''})
    
         6)数组条件的查询
    语法:db.find({key:'value'})    //数组元素值 有一个value存在即可
             例:查询成绩有100分的学生信息
      db.student.find({score:100})
          
    语法:db.tableName.find({key:{'$all':[value1,value2]}}) //数组元素值需存在value1value2(value1value2的顺序不做要求)
    例:查询成绩有100分和80分的学生信息
      db.student.find({score:{'$all':[100,80]}})
           
  (7$or查询,多个条件,满足其中一个即可
    语法:db.tableName.find({'$or':[{key1:'value1'},{key2:'value2'}]})
           例:查询名字是parry或性别是female 
      db.student.find({'$or':[{name:'parry'},{sex:'female'}]})
           
  (8)限制查询字段
           在实际操作中,我们不一定需要查询返回数据的所有字段,那么我们可以做一个字段输出查询的限制。如果全部字段取出来,对内存和带宽都有一定的开销,所以我们按需取字段即可。
           语法:db.tableName.find({条件},{字段:1/0,字段:1/0})   //1:查询此字段 0:不查询此字段
           规则:要输出就全部输出,要不输出就全部不输出
      
           _id是比较特殊,默认是输出的,不过可以通过指定为0,就可以不输出了
      

  4、修改数据

    (1)语法:db.tableName.update({条件},{'$set':{key1:'value1',key2:'value2'}})
    有$set的修改:只修改设置的字段,其他字段不变
    例:修改集合student中名为parry的学生信息,设置年龄为16
    
    (2)db.tableName.update({条件},{key1:'value1',key2:'value2'}})
    没有$set的修改:只修改设置的字段,没有修改的在短就删除了(除了_id字段)
    例:修改集合student中名为jiuyun的学生信息,设置年龄17,姓名zhangjiuyun
    
    (3)字段有则直接修改,没有则添加为新字段
    例:刚才修改的记录,丢失了性别,我们通过update添加上
    
  5、删除数据
         1)删除记录
      语法:db.tableName.remove(条件)
      例:根据name,删除一条记录
      
         2)删除字段
      语法: db.tableName.update({条件},{'$unset':{字段:1/0}})

  6、排序sort()

    在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列

    语法:db.tableName.find().sort({KEY:1})

    

  7MongoDB索引

           索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。
  MongoDB使用 ensureIndex() 方法来创建索引。
  语法:db.colectionName.ensureIndex({key:1})
  语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。
    
posted @ 2016-10-28 10:39  星星满天  阅读(367)  评论(0编辑  收藏  举报