1.MongoDB常用命令

这篇文章详细列举了MongoDB中用于切换数据库、插入删除数据、查看集合状态、创建和删除索引、管理分片和复制集的一系列命令。还涵盖了用户管理和安全性,如创建用户、更改密码以及监控数据库状态。内容包括数据库的连接、关闭、修复,以及查询优化和执行计划分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.MongoDB常用命令

use test   ---切换数据库只有在插入数据时才创建数据库,创建集合。
db.test.insert({name:"test"}) 
db.test.remove({name:"test"})
show dbs; 
show collections;
db.test.find();
db.test.findOne();
db 
db.test.count() ;
db.test.drop();
db.test.find().count(); 
db.test.dataSize();  --集合大小。
db.test.stats(); --集合状态。
db.test.totalIndexSize(); --索引大小。
db.serverStatus().connections; --查看数据库的连接。
db.dropDatabase();--删除当前数据库。
use admin;
db.shutdownServer();  --关闭当前数据库
db.repairDatabase(); --修复数据库。路由实例中不能执行。
db.test.ensureIndex({"name":1});--test集合上name列创建索引。
db.test.createIndex({"name":1});--test集合上name列创建索引。1代表升序,-1降序。
db.test.find({"name":"test"}).explain(); --查看执行计划。
db.test.dropIndex({"name":1});--删除索引。

use testdb ;
for(var i=0;i<11;i++){db.test1.insert({username:'test'+i,age:i})}--创建集合并插入数据。
mongo --host 192.168.1.51 -u admin -p admin123 --authenticationDatabase admin --使用admin用户认证admin数据库。
db.createUser({
user:"test",
pwd:"test123",
roles:[{role:"read",db:"testdb"},{role:"read",db:"testdb1"},{role:"read",db:"testdb2"}]
});--创建test用户并授权权限。
db.changeUserPassword("test","test");--给test用户改密码。

use admin ;
sh.status();   查看路由器里面的状态。
sh.startBalancer(); ---开启平衡。
sh.setBalancerState(true);--开启平衡。 
sh.stopBalancer();--关闭平衡。
sh.setBalancerState(false);--关闭平衡。 
sh.getBalancerState();--查看平衡器状态。
db.runCommand({removeShard:"myshard1"});-- 删除myshard1; 分片。
db.runCommand({movePrimary:"testdb",to:"testshard3"});--将testdb数据库移动到shard3分片。

use admin ;
config={_id:"testshard1",member:[
{_id:0,host:"192.168.1.51:40004",priority:2},--主库。
{_id:1,host:"192.168.1.51:40005",priority:1},--从库。
{_id:2,host:"192.168.1.51:40006",arbiterOnly:true} --仲裁节点。
]}
rs.initiate(config);--添加与分片有关的配置。
rs.status();
rs.add('192.168.1.53:27018');--复制集中增加主机。

--分片路由器。
sh.addShard("testshard1/192.168.1.51:40004,192.168.1.51:40005,192.168.1.51:40006");--添加分片服务器。
sh.enableSharding("testdb");--在testdb上启用分片功能。
sh.shardCollection("testdb.test1",{"id":1});--根据字段id在集合test1上添加分片。
db.settings.save({"_id":"chunkSize","value":1});--设置块大小为1M;
db.auth("admin","admin123"); --登陆数据库时认证用户。
db.runCommand({updateUser:"admin",pwd:"admin123",customDta:{title:"modify-admin-pwd"}});--修改密码。
##db.runCommand({userInfo:"test"});--没有这个命令。
db.getUser("root");--查看用户信息。
db.getUsers(); --查看所有用户。
rs.config();  --查看配置信息。
rs.remove("192.168.1.51:27018");--从主节点删除从节点:27018;


--复制集。
db.printReplicationInfo();--查看复制集允许多长时间了,oplog什么时候开始,什么时候结束的。
db.$cmd.findOne({ismaster:1});--查看当前节点是否是主节点。
rs.isMaster(); --查看当前节点是否是主节点。
rs.stepDown(60);--主节点上执行,60s后主节点降级为从节点。重新选出主节点。
db.system.replset.find();--查看当前复制集。仅在副本集中生效。
db.printReplicationInfo();
rs.slaveOk() 

db.createCollection("users");--创建集合。
db.users.update({"Gender":"F"},{$set:{"Country":"UK"}})  --默认只会更新第一个查询到的记录。
db.users.update({"Gender":"F",{$set:{"Country":"UK"}},{multi:true}})  --使用multi选项更新所有匹配的记录。
db.users.remove({"Gender":"M"}) ;--删除男生。
db.users.remove() ;--删除所有。
user1={FName:"Test",LName:"User",Age:30,Gender:"M",Country:"US"}
db.users.insert(user1);--定义并插入文档。
db.users.find({"Gender":"F",$or:[{"Country":"India"}]})
db.users.find({"Gender":"F",$or:[{"Country":"India"},{"Country":"US"}]})--查看来自美国和印度的女生
db.users.find({"Gender":"F"},{"Name":1,"Age":1}).sort({"Name":-1,"Age":1}) --按名字降序,按年龄升序。
db.users.find({"Gender":"F",$or:[{"Country":"India"},{"Country":"US"}]}).limit(2)
db.users.find({"Gender":"F"},$or:[{"Country":"India"},{"Country":"US"}]).limit(2).skip(2)
SQL>var c=db.users.find({"Country":"US"})
SQL>while(c.hasNext()) printjson(c.next())
SQL>var c=db.users.find({"Country":"US"})
SQL>printjson(c[1]) --显示数组索引1的文档。
db.users.find({"Name":"Test User"}).explain("allPlansExecution")
sql>db.testindx.ensureIdex({"Name":1,"Age":1})  --创建名字和年龄复合索引。
db.testindx.find({"Name":"user5","Age":{"$gt":25}}).explain("allPlansExecution")
db.testindx.ensureIndex({"Name":1},{"unique":true}) --创建唯一索引。
db.testindx.dropIndexes()   --删除已有的索引。
db.version()
db.myprocdb.getIndexes()  
sql>db.testindx.reIndex();
sql>db.students.find({"Age":{"$lt":25}})  --小于25岁。
sql>db.students.find({"Age":{"$lte":25}}) --小于等于25岁。
sql>db.students.find({"Age":{"$gt":25}}) --大于25岁 
sql>db.students.find({"Age":{"$gte":25}}) --大于等于25岁。
sql>db.students.find({"Class":{"$in":["C1","C2"]}}) --属于C1,C2班的。
sql>db.students.find({"Class":{"$nin":["C1","C2"]}}) --不属于C1,C2班的。 
--性别是男,或者班级是C1,C2;且年纪大于等于25
sql>db.students.find({$or:[{"Gender":"M","Class":{"$in":["C1","C2"]}}],"Age":{"$gte":25}})
--找出名字以:St,Te开头,班级以:Che开头的学生。
sql>db.students.find({"Name":/(St|Te)*/i,"Class":/(Che)/i})
i:表明正则表达式不区分大小写。
(St|Te)* :表示字符串必须以:St或者Te开头。
*:表示匹配其后的所有内容。
--名字一student开头,年龄大于等于25岁,男性。
sql>db.students.find({"Name":/(student*)/i,"Age":{"$gte":25},"Gender":"M"})
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值