MongoDB数据库的操作
进入CMD , 输入mongo , 进入shell界面
(一)数据库
1.show dbs; 查看已创建的数据库
2.use dbName; 如果该数据库存在,则进入该数据库/如果数据库不存在则创建该数据库
提示 : 由于新创建的数据库没有集合以及数据,通过show dbs;命令查看不到新创建的数据库名称
需要添加集合并插入数据进行验证: 如
use test;
db.col.insert({name:'Jack',age:20});
show dbs; (可看到名称为test的数据库)
3. db.dropDatabase(); 删除数据库
use dbName; db.dropDatabase();
(二)集合
1.db.createCollection("colName"); 创建集合
use dbName;
db.createCollection("colName",{capped:true}) (设置capped:true表示集合不限定空间大小)
2.show collections; 查看该数据库下的已有集合
use dbName; show collections;
3.db.colName.drop(); 删除集合
use dbName; db.colName.drop();
(三)数据的增删改查
(以操作test数据库下的集合col为例)
1.插入数据
use test;
db.col.insert({"name":"优快云","age":20,"topic":["computer","book","job"]});
2.修改数据
假设集合col中有数据:
{"name":"Jack","age":25,"from":"USA"}
{"name":"Bob","age":32,"from":"China"}
{"name":"Lily","age":10,"from":"French"}
{"name":"Frid","age":48,"from":"China"}
修改数据:
use test;
db.col.update({name:"Bob"},{$set:{age:100}}); 只修改一条数据
db.col.update({from:"China"},{$set:{age:100}},{multi:true}); 修改所有匹配的数据
3.删除数据
(1)删除指定记录 : db.col.remove({...})
其中:{...}表示条件 ==> {from:"China"}(删除from属性为China的记录)
(2)删除所有记录 : db.col.remove({})
4.查询数据
(1)查询所有记录 : db.col.find();
注:db.col.find(); --> 输出每条记录的所有字段
如果要指定字段输出 , 有如下方式:
db.col.aggregate({$project:{
name:1,from:1,_id:0
}});
其中:(name:1)表示输出属性 (_id:0)表示不输出属性
(2)条件查询记录 : db.col.find({....})
(a)指定属性大小
{age : 25} + {age : {$ne : 25}}
{age : {$gt : 25}} + {age : {$lt : 25}} + {age : {$gte : 25}} + {age : {$lte : 25}}
{age : {$gt : 20,$lt : 45}}
(b)AND
{from : "China",name : "Bob"}
(c)OR
{$or : [{name : 'Bob'},{name : 'Nike'}]}
(四)其他操作
(1)排序
db.col.find().sort({age: 1}) ---(按照属性age正序排列)
db.col.find().sort({age: -1}) ---(按照属性age反序排列)
(2)分类
db.col.aggregate({$group:{_id:'$from',num:{$sum : 1}}}); ---按照属性from进行分组,并统计每组的样本量
db.col.aggregate({$group:{_id:'$from',min:{$min : '$age'}}}); ---按照属性from进行分组,并统计每组中年龄的最小值
db.col.aggregate({$group:{_id:'$from',max:{$max : '$age'}}}); ---按照属性from进行分组,并统计每组中年龄的最大值
db.col.aggregate({$group:{_id:'$from',avg:{$avg : '$age'}}}); ---按照属性from进行分组,并统计每组中年龄的平均值
(3)限制查询的记录数
db.col.find({...}).limit(num) ---查询结果返回符合条件的num条数据
(4)管道流
基本属性:
1.$project : 控制输出记录的字段(1表示输出字段/0表示不输出字段)
如:db.col.aggregate({$project : {name : 1, from : 1,age : 0}}); ---输出字段name和from,不输出字段age
2.$match : 查询条件
如:db.col.aggregate({$match : {age : {$gt : 10,$lt : 50}}); ---匹配年龄在10-50之间的记录
db.col.aggregate({$match : {from : {$exists : True}});
db.col.aggregate({$match:{$or:[{from:'UK'},{from:'China'}]}});
3.$limit : 限制查询记录数
如:db.col.aggregate({$limit : 3})
4.$group : 记录分组
如:db.col.aggregate({$group : {_id : '$from',num : {$sum : 1}}});
综合使用:
db.col.aggregate([ {$project : {...}}, {$match : {...}}, {$group : {...}});