Mongodb数据库的安装及使用

  • Linux下安装

  1. 准备内容:需要有一个MongoDB在Linux下的安装包
  2. 解压缩安装包
    解压到桌面即可
    tar -zxvf mongo....gz
  3. 将解压完成的的文件中的内容移动到 /usr/local/mongodb 目录下
     sudo mv mongodb...af/  /usr/local/mongodb
     /usr/local/mongodb  : mongodb的安装路径
  4. 在mongodb目录下创建data目录,在data目录下创建db及log目录 
    目前db的路径为 /usr/local/mongodb/data/db

                  文档链接  密码:i5dg  

  • windows下的安装:可视化简单安装,详见上面安装文档。
     

  • 使用:
      

    一、启动
       1.在windows中启动:
            1.切换到 安装目录的bin目录下
                e: 切换盘符
            2. cd E:\Program Files\MongoDB\Server\3.4\bin 切换路径
            3.启动服务端,并指定数据的存储路径   
             格式: mongod --dbpath=数据存储路径
             如:  mongod --dbpath=E:\Program Files\MongoDB\Server\3.4\data\db
              注意有些需要加上引号   mongod --dbpath="E:\Program Files\MongoDB\Server\3.4\data\db"

           4.启动客端端  ---  注:不要关闭服务
              1.先启动cmd =,切换到 安装目录的bin目录下
              2.执行启动
             格式: mongo.exe   看到 >  即可
            
        2.Linux下启动:
            1.启动mongodb的服务器端
             进入到mongodb的bin目录下,执行以下命令
             ./mongod -dbpath=data/db的路径
             ./mongod -dbpath=/usr/local/mongodb/data/db
             见到port为27017时代表启动成功

           2.启动mongodb的客户端 (之前的服务器端不能关闭,重新打开一个终端)
           进入到mongodb的bin目录下,执行以下命令
           ./mongo
    二、数据库操作
        1.查看所有的数据库
        格式:  

    show databases;


        简写:

    show dbs;


            
        2.创建或者使用一个数据库
          格式: use  数据库名;      

    use school;

           
          当对应的数据库不存在的时候,表示创建该数据库
          如果数据库已经存在,表示使用该数据库

          注意:如果创建了一个新的数据库,而该数据库中没有数据,则使用
          show dbs查看的时候,任然看不到,插入数据库后,即可查看到
           插入数据如: db.student.insert({name:"haha"})
        3.查看当前使用的数据库
            格式: db  代表的是当前数据库
            或者  db.getName() 可以查看当前数据库的名字
            
        4.删除当前数据库

    db.dropDatabase()

       
       5.帮助命令 help
       6.退出 
           exit
    三、集合的操作 ---相当于关系型数据库的 表
       1.查看当前库中的所有集合
          格式: show collections;
       2.创建一个集合
          方式1:  db.createCollection("集合名")    集合名需要加上引号
                 例:db.createCollection("集合名")


          方式2:  db.集合名.insert(数据)
                 例:db.student2.insert({name:"张三"})

        区别: 方式1是创建一个空的集合,如果集合已经存在,不会覆盖创建
               
              方式2:如果对应的集合不存在表示创建一个集合,并插入数据
                    如果对应的集合存在,表示直接插入一条数据!
       3.删除一个集合
          格式:  db.集合名.drop() 

    四、文档的操作
    相当于关系型数据库表中一行数据 row 
         1.插入数据
           1_1.添加一个数据 
              格式: db.集合名.insert(数据)
              数据: key-value的形式
              是bson格式, 与json格式一样
              格式:
                 1_ 1_1.  {key1:value,key2:value, keyN:value}
                 1_1_ 2. [ {key1:value,key2:value, keyN:value}, {key1:value,key2:value, keyN:value}]  jsonArray
                 1_1_3. {key1:嵌套json数据,key2:value, keyN:value}     

           例:

     db.student.insert({name:'张三',age:66,address:"北京",sex:"男"})


               WriteResult({ "nInserted" : 1 })表示插入成功
             注意: mongodb插入数据的时候,会默认生成一个 _id相当于关系型数据库中的主健
                如: "_id" : ObjectId("5b8f45c12e3e35173c33f13c")
         1_2.添加多个数据
              格式: db.集合名.insert([数据1,数据2,数据n])
               例:

    db.student.insert([{name:'李四',age:66,address:"北京",sex:"女"},{name:'王
    五',age:56,address:"陕西",sex:"女"},{name:'赵六',age:46,address:"上海",sex:"男"},{name:'田
    七',age:76,address:"西安",sex:"男"},{name:'吴九',age:86,address:"东京",sex:"男"}])


           1_3.插入数据 save 保存
               格式: db.集合名.save(数据)    使用方法与insert一致
              例:

    db.student.save({name:'张某某',age:30,address:"大理",sex:"未知"})


              
               insert和save区别: 
              如果使用save设置_id属性,且_id已经存在时, 会修改数据
              而使用insert设置_id属性,_id已经存在时, 会报错。
              

    2.查询数据---结果是 bson的形式
          2_1.查询所有的数据
            格式: db.集合名.find()
             
          2_2.根据条件来查询数据 --关系数据库: select 字段名,  from 表 where 条件
              格式: db.集合名.find(query,names)
              参数query是查询条件 
              参数names 是要展示的字段名

              注意: query,names都是json的数据格式
              query参数 如:   {age:76}  表示查询age = 76的数据
              names参数  如:  {name:1,age:1} 表示只显示name属性和age属性
              注意如果没有names,则所有的属性及值都显示
              1表示显示,  0 表示不显示

             需求:查询年龄是76岁的人的姓名,地址
                      例:

    db.student.find({age:76},{name:1,age:1})

           
          2_3.查询一条数据
           格式: db.集合名.findOne(query,names)
             例:

    db.student.findOne({name:'李四'})

          
          2_4.根据_id来查询
             例:

    db.student.findOne({"_id":ObjectId("5b8fc2cf739ba435b9c6be32")})
    


          2_5.格式化查询结果
            格式: db.集合名.find().pretty()
            例:

    db.student.find().pretty()


                  
       3.数据的修改
          格式:db.集合名.update(query,set,{upsert:布尔类型,multi:布尔类型})
                 参数都是json的格式      
          3_1.query  查询条件
          3_2.set   要修改的属性和对应的属性值
        
         需求: 将李四的性别改为男
          例:

    db.student.update({name:'李四'},{sex:'男'})

          
          注意: 如果以以上方式修改,是将整个数据改为 {sex:'男'},而不是只修改sex属性
                   只修该属性:     
            格式:db.集合名.update(query,{$set:{属性名:属性值}})

    db.student.update({name:'张三'},{$set:{sex:'女'}})


         格式:db.集合名.update(query,{$inc:{属性名:值}}) 
         例:

    db.student.update({name:"田七"},{$inc:{age:10}}) 

        表示在某个属性上添加某个值

         3_3. upsert 表示在修改数据的时候,如果查询条件没有找到对应的数据,
                 是否将修改的内容当作新的数据添加到集合中
                 true 表示添加进来
                false 表示不当作新数据添加进来
                默认是false
            例:
              

    db.student.update({name:"孙某某"},{address:"深圳"},{upsert:true})


        3_4.multi 表示在修改数据的时候,如果查询出了多条符合条件的数据,是否将多条数据全部进行修改
              true 表示全部都修改
          false 表示值修改匹配的第一条数据

          默认是false
              例:
          

    > db.student.update({sex:"女"},{$set:{address:"上海"}},{multi:true})
    


         
       4.删除数据 ---- delete from 表名 where 条件
         格式:db.集合名.remove(query,{justOne:布尔值})
         例:
         

    db.student.remove({address:"深圳"})


         

    db.student.remove({sex:"男"},{justOne:true})


         注意:默认会将所有符合条件的数据都删除,
         justOne表示是否只删除 第一条符合条件的数据 
          true 只删除一条, false表示全部删除,  默认为false

 

 

五、查询条件
    1.比较运算符
       $gt 大于
       $lt  小于
       $gte 大于等于
       $lte  小于等于
       $eq   等于   或者  :
       $ne   不等于
       
        格式: db.集合名.find({字段名:{运算符:值}})

       需求:查询年龄大于60的student
        例:

db.student.find({age:{$gt:60}})


    2.逻辑运算符
      $and  且    或者   ,  
           格式1: db.集合名.find({条件1,条件2})
           格式2:db.集合名.find({$and:[{条件1},{条件2}]})

        需求:找出年龄在50岁以上,60岁以下的女性的数据?
        

> db.student.find({$and:[{sex:"女"},{age:{$gt:50}},{age:{$lt:60}}]})

      
        
           需求:查询年龄在大于等于40且小于等于60的数据
           error :  db.student.find({age:{$gte:40},age:{$lte:60}})
           正确写法:  db.student.find({age:{$gte:40,$lte:60}})
           注意: 以上写法后面的属性会覆盖前面的属性

      $or   或者
          格式:   db.集合名.find({$or:[{条件1},{条件2}]})  
          写法同上,把and换成or即可。

      $not   非
     格式:   db.集合名.find({$not:{条件1}}) 
    
    3.模糊运算符

       格式: db.集合名.find({字段名:/匹配的数据/})
       注意: / /   不需要将引号
  
       需求:查找出名字中包含张字的数据

db.student.find({name:/张/})

    /^字符/   表示以某个字符开始的数据
    /字符$/   表示以某个字符结尾的数据
       需求: 查找出姓 张 的数据
       

db.student.find({name:/^张/})

 
   
   4.分页  ---- 关系:  limit 值1,值2
     limit(number) 表示读取指点数量的数据  相当于 值2
     skip(position) 表示跳到指定位置开始读数据    注: 位置从 0 开始     相当于值1
      
     

db.student.find().skip(1) 
db.student.find().limit(1) 

     需求: 每页3条数据,获取3页数据
     

 db.student.find().skip(6).limit(3)


     需求: 每页m条数据,获取n页数据
     格式: db.student.find().skip((n-1)*m).limit(m)
      
   5.排序 sort    字段名 升序/降序
      格式:   db.student.find().sort({字段名:1/-1})   1: 表示升序    -1: 降序
      需求: 按照年龄的升序排序

db.student.find().sort({age:1})


   
   6.计算查询结果的数量    
       

db.student.find().count()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值