一、基础
1、增
# 创建库 ps:use的话需要插入数据才能显示的哟!
> use msg
# 查看当前使用的库
> db
# 创建集合
> use msg
> db.createCollection("user")
> show tables
# 插入数据
> db.user.insert({"name":"mongo"})
2、删
# 删除库
> use msg
> db.dropDatabase()
# 删除集合
> use msg
> db.user.drop()
# 删除整个集合中的所有数据
> db.test.remove()
# 删除集合中符合过滤条件的数据
> db.test.remove({name:/aws/})
# 删除符合条件的一条记录
> db.test.remove({name:/aws/},1)
3、查
# 查询数据库
> use msg
# 查看数据库数据详情
> db.stats()
# 查询集合
> show tables
# 重命名集合
> db.user.renameCollection("USER")
# 查看集合数据详情
> db.user.stats()
# 查看集合所有数据
> db.user.find()
# 格式化输出
> db.user.find().pretty()
# 查看一条数据
> db.user.findOne()
# 查看匹配数据
> db.user.find({"name":"mongo"})
# 查询大于某个数值数据
> db.user.find({salary:{$gt:7000}})
# 查看名称中包含‘a’的数据
> db.user.find({name:/a/})
# 查询name以W打头的数据
> db.user.find({name:/^W/})
# 多条件“与”
# 查询age小于30,salary大于6000的数据
> db.user.find({age:{$lt:30},salary:{$gt:6000}})
# 多条件“或”
# 查询age小于25,或者salary大于10000的记录
> db.user.find({$or:[{salary:{$gt:10000}},{age:{$lt:25}}]})
# 查询记录中的指定列
> db.user.find({},{name:1,age:1,salary:1,sex_orientation:true})
# 查询指定字段的数据,并去重
> db.user.distinct('gender')
# 指定结果集返回条目
> db.user.find().limit(2)
# 查询第一条以外的数据
> db.user.find().skip(1)
# 对结果集排序
# 升序
> db.user.find().sort({salary:1})
# 将序
> db.user.find().sort({salary:-1})
# 统计记录数量
> db.user.find().count()
4、改
# 修改数据
> db.user.update({"name":"mongo"},{$set:{"name":"mongos"}})
# 修改多条相同文档
> db.user.update({"name":"mongo"},{$set:{"name":"mongos"}},{multi:true})
# 只更新第一条记录:
> db.user.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
# 全部更新:
> db.user.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
# 只添加第一条:
> db.user.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
# 全部添加进去:
> db.user.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
# 全部更新:
> db.user.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
# 只更新第一条记录:
> db.user.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
# 更新符合过滤条件的信息
> db.user.update({name:'Gal Gadot'},{$set:{age:23}},false,true)
# 添加新的字段
> db.user.update({name:'Mikie Hara'},{$set:{interest:"CBA"}},false,true)
# 使用函数 $inc
> db.user.update({gender:'female'},{$inc:{salary:50}},false,true)
# 原
{ "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female","interest" : "CBA", "age" : 26, "salary" : 7000 }
# 现
{ "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female","interest" : "CBA", "age" : 26, "salary" : 7050 }
二、集合操作
方法名 |
描述 |
db.collection.aggregate() |
聚合,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果 |
db.collection.bulkWrite() |
批量写入 |
db.collection.createIndex() |
创建一个集合索引 |
db.collection.count() |
返回集合总数或匹配查询的结果集总数 |
db.collection.deleteOne() |
删除集合中的一个文档 |
db.collection.deleteMany() |
删除集合中的多个文档 |
db.collection.dataSize() |
返回集合的大小 |
db.collection.distinct() |
返回具有指定字段不同值的文档(去除指定字段的重复数据) |
db.collection.dropIndex() |
删除一个集合中的指定索引 |
db.collection.dropIndexes() |
删除一个集合中的所有索引 |
db.collection.drop() |
删除当前数据库中的collection集合 |
db.collection.explain() |
返回各种方法的查询执行信息 |
db.collection.findOne() |
查询单条数据 |
db.collection.findOneAndReplace() |
查询单条数据并替换 |
db.collection.findOneAndDelete() |
查询单条数据并删除 |
db.collection.findOneAndUpdate() |
查询单条数据并更新 |
db.collection.find() |
查询集合,无参数则查询所有,并返回一个游标对象 |
db.collection.findAndModify() |
查询并修改 |
db.collection.getIndexes() |
返回当前集合的所有索引数组 |
db.collection.group() |
提供简单的数据聚合功能 |
db.collection.isCapped() |
判断集合是否为定容量 |
db.collection.insert() |
在当前集合插入一条或多条数据(或叫文档) |
db.collection.insertMany() |
在当前集合插入多条数据 |
db.collection.insertOne() |
在当前集合插入一条数据 |
db.collection.reIndex() |
重建当前集合的所有索引 |
db.collection.renameCollection() |
重命名集合名称 |
db.collection.replaceOne() |
替换集合中的一个文档(一条数据) |
db.collection.remove() |
从当前集合删除数据 |
db.collection.save() |
已插入数据更新 |
db.collection.stats() |
返回当前集合的状态 |
db.collection.storageSize() |
返回当前集合已使用的空间大小 |
db.collection.totalSize() |
返回当前集合的总占用空间,包括所有文件和所有索引 |
db.collection.totalIndexSize() |
返回当前集合所有的索引所占用的空间大小 |
db.collection.updateMany() |
修改集合中的多条数据 |
db.collection.update() |
修改集合中的数据 |
db.collection.updateOne() |
修改集合中的一条数据 |
db.collection.validate() |
执行对集合验证操作 |
三、副本集操作
方法名 |
描述 |
rs.initiate() |
|
rs.addArb() |
添加仲裁 |
rs.help() |
帮助 |
rs.printReplicationInfo() |
查看到副本集操作日志 |
rs.remove() |
减少副本集节点 |
rs.freeze() |
“冻结”mongodb实例 |
rs.status()/sh.status() |
查看副本集状态 |
db.printSlaveReplicationInfo |
查看复制集的同步状态 |
rs.add() |
增加副本集节点 |
rs.stepDown() |
将当前主库“降级” |
rs.slaveOk() |
|
rs.conf() |
|
rs.syncFrom() |
|
rs.reconfig() |
|
四、用户管理
方法名 |
描述 |
db.getUsers() |
获取所有用户 |
db.dropAllUsers() |
删除所有用户 |
db.updateUser() |
更新用户 |
db.createUser() |
创建用户 |
db.revokeRolesFromUser() |
取消授权 |
db.removeUser() |
删除用户 |
db.grantRolesToUser() |
授权 |
db.getUser() |
获取用户 |
db.changeUserPassword() |
更改用户密码 |
db.auth() |
数据库认证、安全模式 |
五、索引
1、新增索引
# 单键索引
> db.集合.createIndex({"name":1})
# 倒序索引
> db.集合.createIndex({"name":-1})
# 唯一索引
> db.集合.createIndex({"name":1},{"unique":true})
# 后台建索引
> db.集合.createIndex({"name":1},{background:1})
# 复合索引
> db.集合.createIndex({"name":1,"age":1})
2、查看索引
# 查看数据库所有索引
> db.system.indexes.find()
# 查看集合索引
> db.集合.getIndexes()
> db.集合.getIndexKeys()
# 查看索引大小
> db.集合.totalIndexSize()
3、删除索引
# 删除单个索引
> db.集合.dropIndex("name_1")
# 删除所有索引
> db.集合.dropIndexes()
4、重建索引
> db.集合.reIndex({"name":1})
六、副本集
1、基础操作
# 查看集群状态
> rs.status()
# 查看配置
> rs.config()
# 允许在从节点查询操作
> rs.slaveOK()
# 查询是否主节点
> rs.isMaster()
2、成员管理
# 添加成员
> rs.add("ip:port")
# 添加仲裁节点
> rs.addArb("ip:port")
# 删除成员
> rs.remove("ip:port")
# 重置配置
> rs.reconfig()
3、主从管理
# 降级
> rs.stepDown(time)
# 阻止选举
> rs.freeze(time)
# 主从延迟状态
# 主
> db.printReplicationInfo()
# 从
> db.printSlaveReplicationInfo()
七、分片
1、基础操作
# 查看集群状态
mongos> sh.status()
# 列出所有分片
mongos> db.runCommand({ listshards : 1 })
# 添加分片
mongos> sh.addShard("shard1/192.168.200.11:40000")
# 移除分片
mongos> db.runCommand({"removeShard":"shard1"})
# 如果是主分片,需要先把对应数据库移动到其他分片,再删除,执行多遍查看是否迁移完成。
mongos> db.runCommand( { movePrimary: "msg", to: "shard2" })
# 移除完需要刷新缓存
mongos> db.adminCommand({"flushRouterConfig":1})
2、平衡器
# 平衡器
# 开启平衡器
mongos> sh.startBalancer()
# 停止平衡器
mongos> sh.stopBalancer() # 停止平衡器
or
mongos> sh.setBalancerState(false)
# 获取平衡器状态
mongos> sh.getBalancerState()
# 验证禁用后有没有正在迁移的块
mongos> sh.isBalancerRunning()
3、开启分片
mongos> use admin
# 开启库分片
mongos> sh.enableSharding("dba")
或
mongos> db.runCommand({enablesharding:"dba"})
# 开启集合分片
mongos> sh.shardCollection("库.集合",{"name":1})
或
mongos> db.runCommand({shardcollection:"库.集合",key:{"name":1}})
mongos> sh.status()
# 查看集合分布情况
mongos> db.集合.stats()
4、数据块
# 查看块大小
mongos> use config
mongos> db.settings.find()
# 修改块大小
mongos> db.settings.save({"_id":"chunksize","value":32})
手动迁移块
# 需要先关闭平衡器哟
mongos> use config
查询块
mongos> db.chunks.find().pretty()
#手动拆分
mongos> sh.splitAt("库.集合",{"groupId":"500000001","_id":"6569514481477484544"})
#手动迁移分片
mongos> sh.moveChunk("库.集合",{"name" : "wPeFnJEvendSTbH"},"其他分片")
网友评论