一 、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 将标签转实体 <转< >
{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");
网友评论