MongoDB的安装和使用

一 、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");



   




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容