MongoDB 使用
发布网友
发布时间:2024-10-01 20:31
我来回答
共1个回答
热心网友
时间:2024-10-17 18:45
在MongoDB中入门与使用:
查看帮助:db.help()
获取当前数据库版本:db.version()
获取当前数据库名称(默认在 test 中):db.getName()
删除数据库:db.dropDatabase();
查看数据库状态:db.stats()
创建或进入数据库:use gnol
查看表或集合:show tables/show collections
创建集合:db.createCollection("sys_user");
删除集合:db.sys_user.drop();
查询记录:db.sys_user.find();
查询 name 列,并且不返回 _id 列:db.sys_user.find({},{name:1,_id:0});
查询条件:db.sys_user.find({age:{$ne:18, $gt:18, $gte:18, $lt:18, $lte:18, $nin:[18,100], $in:[18,19]}, $and:[{age:{$gte:18}}, {age:{$lte:50}}], $nor:[{age:18}, {age:50}], age:{$mod:[10,0]}, age:{$exists:1}, age:{$type:2}, hobby:{$all:['a','c']}}, {age:1,name:1,_id:0});
插入文档记录:db.sys_user.insert({name:'wujialong',age:18});
根据条件删除文档记录:db.sys_user.remove({age:18});
修改数据:db.sys_user.update({name:'wujialong'},{name:'wjl',age:20});
修改记录的某个字段:db.sys_user.update({name:'wjl'},{$set:{name:'wujialong'},$unset:{name:'wujialong'},$rename:{sex:'gender'},$inc:{age:10},$setOnInsert:{address:'中国'}},{multi:true,upsert: true});
如果有则修改,没有则插入:db.sys_user.update({name:'wjl'},{name:'w'},{upsert:true});
默认是按照 btree 来组织索引文件,也可以采用 hash 索引。查看索引使用情况:db.sys_user.find().explain(); 添加索引:db.sys_user.ensureIndex({name:1}); 创建唯一索引:db.sys_user.ensureIndex({name:1},{unique:true}); 创建子文档索引:db.sys_user.ensureIndex({'hobby.a':1}); 创建稀疏索引:db.sys_user.ensureIndex({field:-1/1},{sparse:true}); 添加 hash 索引:db.sys_user.ensureIndex({field:'hashed'}); 查询索引:db.sys_user.getIndexes(); 重建索引:db.sys_user.reIndex(); 删除索引:db.sys_user.dropIndex({name:1}); 删除所有索引(除 _id 字段):db.sys_user.dropIndexes(); 函数:group 简单分组,不支持分片统计:分组统计(按性别统计人数) group、count: db.sys_user.group({key:{sex:1},cond:{age:{$gt:50}},reduce:function(curr, result){result.countNum += 1},initial:{countNum:0}}); 分组求和(按性别统计年龄之和) group、sum: db.sys_user.group({key:{sex:1},reduce:function(curr, result){result.sumNum += curr.age},initial:{sumNum:0}}); 分组求最大值(按性别获取最大年龄)group max: db.sys_user.group({key:{sex:1},reduce:function(curr, result){if(curr.age > result.maxNum){result.maxNum = curr.age}},initial:{maxNum:0}}); 分组求最小值(按性别获取最小年龄)group min: 同上;分组求平均值(按性别获取平均年龄) group avg: db.sys_user.group({key:{sex:1},reduce:function(curr, result){result.sumNum += curr.age;result.countNum += 1},initial:{sumNum:0,countNum:0,avg:0},finalize:function(result){result.avg = result.sumNum / result.countNum}}); aggregate 聚合管道,支持分片统计:分组统计(按性别统计人数) group、count: db.sys_user.aggregate([{$match:{age:{$gt:50}},$group:{_id:'$sex',total:{$sum:1}},$match:{total:{$gt:5000}}}]); 分组求和(按性别统计年龄之和) group、sum: db.sys_user.aggregate([{ $group:{_id:'$sex',total:{$sum:'$age'}}},{ $sort:{total:1}},{ $limit:1}]); 分组求平均值(按性别获取平均年龄) group、avg: db.sys_user.aggregate([{ $group:{_id:'$sex',avg:{$avg:'$age'}}},{ $sort:{avg:-1}}]); Map Reduce 分布式大数据运算模型,支持分片统计:分组统计(按性别统计人数) group、count: db.sys_user.mapReduce(function(){emit(this.sex, 1);},function(sex, num){return Array.sum(num)}, {query:{},out:'countNum'}); 数据库管理:系统内置角色:cnblogs.com/dbabd/p/108... root 超级管理员角色(包含 readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin) 系统用户操作:添加超级管理员:use admin; show tables; db.createUser({user:"root",pwd:"000000",roles:[{role:"root",db:"admin"}]}); 添加数据库管理员:use admin; db.auth("root","000000"); use gnol; db.createUser({user:"gnol",pwd:"000000",roles:[{role:"readWrite",db:"gnol"}]}); 修改密码:db.changeUserPassword("gnol","123456"); 删除用户:db.removeUser("gnol");