mongoDB的安装与使用

来源:互联网 发布:哪些软件可以赚集分宝 编辑:程序博客网 时间:2024/05/21 09:07

介绍

mongodb是一种非关系型的数据库,它采用的BSON()的语法,轻便,简单,高效。BSON是一种类JSON的对象,以二进制的形式存储,在存储的时候采用{“name”:“jack”,“age”:20}键值对的形式。

安装

1.安装下载的.msi文件 ,注意安装在纯英文的路径上,各种next,就完成了安装。2.配置环境变量,将mongodb的安装路径的bin目录添加到系统环境变量path中。(不配置环境变量就要在mongodb的安装路径的bin文件夹下打开cmd)3.手动建立数据仓库,注意是纯英文路径4.打开cmd面板,执行mongod --dbpath "c:/data/db" --storageEngine=mmapvq5.重新打开一个cmd命令窗口,执行mongo(4步骤打开的cmd不能关闭)再次运行:1.打开cmd执行mongod2.再打开一个cmd命令窗口运行mongo; 再次运行的时候出现错误的解决方法:(执行其中的一个,情况一样执行不一样)1.mongo --repear2.mongo --dbpath "c:/data"3.mongo --auth --dbpath c:\mongo\mongoDB\mongo\data --repear4.删除仓库根目录中的mongod.lock文件

库的操作

查看所有库:show dbs创建并进入库: use ku-name删除库: db.dropDatabase()  //要先进入要删除的库再删除。

集合的操作

注: 要先进入collection 再操作查看集合帮助: db.collection.help()查看集合: show collections集合重命名: db.collection.renameCollection()查看集合空间大小: db.collection.dataSize()查看集合总数据量: bd.collection.count()查看集合所在数据库:db.collection.getDB();删除集合:db.collection.drop()集合复制:db.collection.copyTo('copy-name')

数据操作(增删改查)

注:先进入collection再操作

增加数据

db.collection.insert({"name":"jack","age":18}){"name":"jack","age":18}:要增加的数据

删除数据

db.collection.remove({"name":"jack"}){"name":"jack"}:要删除数据的条件

修改数据

db.collection.update({"name":"jack"},{"age":20},{upsert:true},{multi:true}){"name":"jack"}:更新的条件{"age":20}: 要更新的内容{upsert:true}:如果不存在该数据,是否选择插入该数据。{multi:true} : 匹配多个 false时只匹配查找到的第一个上面方法的弊端: 会用要更新的内容替换更新条件所在的数据。$inc : 增加数字类型值的value    db.collection.update({name:"jack"},{$inc:{age:10}})      // jack所在数据的age增加10$set: 设置key的value    db.collection.update({name:"jack"},{$set:{name:"lisi"}})     //将jack所在数据的name改为lisi,元数据中没有的key,可增加key:value$unset : 删除属性    db.collection.update({name:"jack"},{$unset:{age: 18}},{multi:true})      //将所有jack所在数据的age属性删除$push: 往 数组中添加一个值    db.collection.update({name:"jack"},{$push:{hobby:"lanqiu"}})     //往hobby的value(数组)中添加lanqiu。$pushAll:往数组中添加多个值    db.collection.update({name:"jack"},{$pushAll:{hobby:[lanqiu,zuqiu]}})     //往hobby的value(数组)中添加lanqiu、zuqiu$addToSet:增加一个值到数组内,只有当这个值不在数组内才增加    db.collection.update({name:"jack"},{$addToSet:{hobby:{$each:[lanqiu,zuqiu]}}})$pop:删除数组内的一个值    db.collection.update({name:"jack"},{$pop:{hobby:1}}) //从hobby数组的末尾删除    db.collection.update({name:"jack"},{$pop:{hobby:-1}}) //从hobby数组的开头删除$pull:从数组内删除一个等于value的值    db.collection.update({name:"jack"},{$pull:{hobby:"lanqiu"}})    //删除jack数据hobby属性值中的lanqiu$pullAll:从数组删除多个值    db.collection.update({name:"jack"},{$pullAll:{hobby:['lanqiu','zuqiu']}})    //删除jack数据hobby属性值中的lanqiu、zuqiu

查询数据

db.collection.find()    //查找集合内所有的数据db.collection.find({'age':18})    //查找集合内所有age为18的数据db.collection.find({"age":{$gt:18}})    //查找集合内所有age大于18的数据db.collection.find({"age":{$lt:18}})    //查找集合内所有age小于18的数据db.collection.find({"age":{$gte:18}})    //查找集合内所有age大于等于18的数据db.collection.find({"age":{$lte:18}})    //查找集合内所有age小于等于18的数据db.collection.find({"age":{$gt:18,$lte:30}})    //查找集合内所有age大于18小于30的数据db.collection.find({"age":{$ne:30}})    //查找集合内所有age不等于30的数据db.collection.find({'age':{$mod:[10,1]}})    //取模运算,查找集合内所有age%10 =1 的数据db.collection.find({"age":{$nin:[1,2,3]}})    //查找集合内所有age不属于[1,2,3]中的任何一个db.collection.find({"age":{$in:[1,2,3]}})    //查找集合内所有age属于[1,2,3]中的任何一个db.collection.find({"hobby":{$size:1}})    //查找集合内所有hobby的值为1个的数据db.collection.find({"age":{$exists:true|false}})    //true 存在字段age,返回有age的数据,    //false 不存在字段age,返回没有age的数据db.collection.find({"key":/^val.*val$/i})    //查找集合内key的值符合正则表达式的数据db.collection.find({$or:[{a:1},{b:2}]})    //查找集合内符合a=1或b=2的数据db.collection.find("age":18,$or:[{a:1},{b:2}])    //查找集合内age=18,并且a=1或b=2的数据db.collection.find({"key":{$not:/^val.*val$/i}})    //查找集合内key的值不符合正则表达式的数据    $not: 以上查找,如果加上$not就会获得相反的结果db.collection.find().sort({"key1":-1,"key2":1})    //将集合内的所有数据排序,1为升序,-1为降序db.collection.find().limit(10),skip(10)    //分页  limit查询多少条  skip从第几条开始查

索引

索引的目的是为了提高查询的效率,但是索引也不是越多越好,有两面性。索引会影响插入数据的效率创建索引:(1代表升序  -1代表降序)db.collection.ensureIndex({"name":1,"des":-1})设置为唯一索引:db.collection.ensureIndex({"name":1},{unique:true})删除所有索引:db.collection.dropIndexes()删除指定的索引:db.collection.dropIndex({"name":1})

聚合

$sum:求和    db.collection.aggregate([{$group:{_id:"$字段",sumKey:{$sum:1}}}])    //$sum:1  相当于单位$avg:平均值    db.collection.aggregate([{$group:{_id:"$sex",avg:{$avg:"$age"}}}])$min:获取集合中所有文档对应值的最小值    db.collection.aggregate([{$group:{_id:"$sex",min:{$min:"$age"}}}])$max:获取集合中所有文档对应值的最大值    db.collection.aggregate([{$group:{_id:"$sex",max:{$max:"$age"}}}])

数据备份

数据备份: mongodump -d dbname -o c:/data    dbname: 要备份的数据库的名称    c:/data:备份的数据库要放的地址数据恢复:mongorestore -d dbname c:data/test    dbname:恢复数据库新建的名称    c:data/test:要恢复数据库的地址
原创粉丝点击