MongoDB的安装和使用

2017-05-27  本文已影响0人  郭钰涛
一 、Mongo的基本使用
   2.1 Mongo的介绍 NOSQL数据库类型
   show dbs     // 查看已经存在的集合数据

   db.help()    // 查看数据库的所有相关的方法

   db.stats()   // 查看数据库的状态

   db.version()  // 查看当前db的版本

   db.getMongo() // 查看当前db的链接地址

   use blog     // 先切换到对应的数据集合类

   show collections  // 查看集合中的所有的数据信息

   2.2 数据库的插入:

   db.collection.insert({"book_id":1});

   2.3 数据库的查找:
      db.collection.find().count();
      // 类似条件查询
      db.collection.find({"book_id":1});
      //这个主键的id 是自动生成的数据
      // 根据主键查询数据
      db.collection.find({"_id":ObjectId("58bcd55fbcbc58571cb74cd6")});

      比较条件
            // 实体 v-html  将标签转实体 <转&lt > 
            {key:value}:等于
            {key:{$lt:value}}小于
            {key:{$lte:value}}小于等于
            {key:{$gt:value}}大于
            {key:{$gte:value}}大于等于
            {key:{$ne:value}}不等于
      AND条件:{key1:value1,key2:value2}
            例子:db.user.find({username:"zhangsan",sex:1}) 查找名字为zhangsan,性别为1的用户
            OR条件:{$or:[{key1:value1},{key2:value2}]}
            例子:db.user.find({$or:[{age:20},{age:25}]})查找年龄为20岁或者25岁的用户      
      区间查询:{key:{$lt:value1,$gt:value2}}
            例子:db.user.find({age:{$lt:30,$gt:20}}) 查找年龄大于20小于30的用户
            值查询:{key:{$in:array}}     
                   {key:{$nin:[‘a’,’b’,’c']}}
                  例子:db.user.find({age:{$in:[18,22,28]}}) 查找年龄是18,22,28的用户
             模糊查询:{}:{username:正则表达式}
                  例子:db.user.find({username:/ang/}) 查找名字含有ang的用户
                  //类似select * from user where name like '%ang%';
                  例子:db.user.find({username:/^ang/}) 
                  已ang开头的用户
                  //类似select * from user where name like 'ang%';
      分页:
         db.collection.find().limit(10).skip(10) 
         // skip 可以用来实现数据的分页
         跳过10条,获取接下来的10条数据
      排序:db.collection.find().sort({key:1})     
         排序(1升序,-1降序 )
         数据总条数: db.collection.find().count()

   2.4 数据库的更新
   直接更新 不建议使用
   注意:会全部替换为后面的值
   db.user.update({"username":"wusong"},
                  {"username":"wudalang","age":10});

   update 第一个是条件  第二个是要修改的值
   会自动判定对应的key是否存在 不存在则添加 存在则修改
   db.user.update({"book_id":1},{$set:{"book_id":8}});
   update的第三个参数 表示如果多个值相同则都更新 
   db.user.update({"book_id":1},{$set:{"book_id":10}},{"multi":true});
   $inc:对一个数字字段field增加value {$inc:{“count”:1}}
   db.user.update({"username":"tom"},{$inc:{"age":10}})
   年龄增加10岁     
   $unset:删除字段 {$unset:{“key”:”value"}}
   db.user.update({"username":"xiaolang"},{$unset:{"age":1}},{multi:true})


   可选参数:{upsert,multi}
      upsert:如果不存在该数据,是否选择插入该数据,默认false不插入,true为插入数据
      db.user.update({"username":"dalang"},{$set:{"username":"xiaolang","age":18,"Sex":1}},{upsert:true})

      multi:默认false,只更新第一条符合要求的条件,true为修改所有的条件
      db.user.update({"username":"dalang"},{$set:{"username":"xiaolang","age":18,"Sex":1}},{multi:true})

   save 方法更新数据库
   db.collection.save(document,可选参数) 有_id是更新,没有_id是插入
   会丢失一些字段信息
   db.user.save({"_id":ObjectId("58bce7acbcbc58571cb74cd9"),"book_name":"ios"});
   如果存在_id,将某一条数据更新为指定数据,
   等价于覆盖写 会覆盖所有的属性
   // 更新:db.user.save({"_id":ObjectId("57d7768cfe3e017811949432"),"username":"wangwu","age":20})
   如果不存在_id,执行添加操作
   // 添加插入:db.user.save({"username":"lisi"})


   数据库的数组集合操作
   // 可以向记录中添加或修改 一个值  不存在就添加 存在就修改
   db.user.update({username:"jack"},{$set:{likes:[]}});

   // push 向数组中添加一条记录
   参数可以是数组或字符串
   db.user.update({"username":"jack"},{"$push":{likes:"develpment"}})

   // pushAll 向数组中添加多条信息
   参数必须是数组类型
   db.user.update({"username":"jack"},{$pushAll:{likes:["sport","computer"]}})

   // pull 向数组中删除一条记录
   参数可以是数组或字符串
   {$pull:{"key":"value"}}删除等于value的值
   从数组内删除一个key等于value的值(有重复的也一并删除)
   db.user.update({"username":"jack"},{"$pull":{likes:"develpment"}});

   // $pullAll:删除数组中多个值(有重复的也一并删除)
   参数必须是数组类型
   db.user.update({"username":"jack"},{"$pullAll":{likes:["develpment"]}});

   // 删除数组中的最后一个值
   db.user.update({"username":"jack"},{$pop:{likes:1}})

   // 删除数组中的第一个值
   db.user.update({"username":"jack"},{$pop:{likes:-1}})

   数据库的删除
   db.collection.remove(删除条件):只删除数据,不删除表,不删除索引
   注意:删除 remove方法只有一个条件
   db.user.insert({"username":"david"});
   db.user.insert({"username":"david"});
   db.user.insert({"username":"david"});

   先执行前面的插入3条数据  然后在执行后面的删除 删除前面插入的3条数据信息
   db.user.remove({"username":"david"});

   // 第2个参数默认为false 删除所有的相关记录 如果设置为true 则只删除 查询到的第一条记录信息
   // 第2个参数 表示是否是单行删除  默认为false 表示不是单行删除
   db.user.remove({"username":"david"},true);

   // 空条件 表示删除集合中所有的元素信息
   // 类似清空表中的数据  但是表不删除  mongodb中叫索引(即表索引)不删除
   db.collection.remove({}):删除所有数据,不删除集合,不删除索引
   db.collection.drop():连集合一并删除,删除索引 
   // 删除整个集合  类似删除表的操作 
   // 删除整个文档 和 文档对应的索引  即表名称
   db.dropDatabase(); 删除当前所在的数据库信息

二、数据库的索引
    索引:为了查询提速
    获取索引
    db.collection.getIndexes()
    给username和description创建索引(1升序-1倒叙)
    db.collection.createIndex({"username":1})
    设置username为唯一索引
    db.collection.createIndex({"username":1},{unique:true})
    删除指定索引
    db.collection.dropIndex({"username":1})
    删除所有索引
    db.collection.dropIndexes()
   

三、数据库的备份和恢复
   // 从制度的位置恢复数据库
   // 备份数据库
   mongodump -d blog -o C:/testData

   // 恢复数据库
   mongorestore -d blogtest C:/testData/blog

四、修改表名称
    db.tickets.renameCollection("tickets_bak20130510");



   




上一篇 下一篇

猜你喜欢

热点阅读