美文网首页
MongoDB基本操作命令

MongoDB基本操作命令

作者: 苏米西 | 来源:发表于2019-10-25 16:41 被阅读0次

一、基础

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"},"其他分片")

相关文章

网友评论

      本文标题:MongoDB基本操作命令

      本文链接:https://www.haomeiwen.com/subject/hvxevctx.html