mongodb的常用命令,mongodb启动命令参数
成功启动mongoDB后,打开命令行窗口,进入Mongo,就可以进行一些数据库操作了。进入help可以看到基本的操作命令,只是MongoDB没有创建数据库的命令,但是有类似的命令。
mongod . exe-数据库的服务器端,相当于mysql的mysqld命令,启动服务器端。
mongo . exe——数据库的客户端,相当于mysql的mysql命令,打开管理控制台。
Mongo是一个交互式的js shell,它提供了一个强大的js环境,为DBA提供了管理MongoDB的接口,为开发者提供了查询MongoDB数据的接口。通过mongo shell与MongoDB交互,查询和修改MongoDB数据库,管理MongoDB数据库,维护MongoDB副本集和碎片集群,是一个非常强大的工具。
成功启动mongoDB后,打开命令行窗口,进入Mongo,就可以进行一些数据库操作了。
进入help查看基本操作命令:
显示数据库:显示数据库列表
显示集合:显示当前数据库中的集合(类似于关系数据库中的表)。
显示用户:显示用户
使用db name:切换当前数据库,这与MS-SQL中的意思相同。
Db.help():显示数据库操作命令,其中包含许多命令。
Db.foo.help():显示设置操作命令,也有很多命令。foo指的是当前数据库中一个名为foo的集合,但它不是一个真正的命令。
Db.foo.find():对当前数据库中的foo集合执行数据查找(因为没有条件,所以将列出所有数据)
Db.foo.find( {a: 1}):查找当前数据库中的foo集合,前提是数据中有一个名为a的属性,a的值为1。
MongoDB没有创建数据库的命令,但是有类似的命令。
比如要创建一个“myTest”数据库,首先运行use myTest命令,然后做一些操作(比如db.createCollection(user )),这样就可以创建一个名为“myTest”的数据库。
常见数据库命令
1.帮助查看命令提示符
帮助
db . help();
db . your coll . help();
db.youColl.find()。help();
RS . help();
2.切换/创建数据库
使用yourDB创建表时,会自动创建当前数据库。
3.查询所有数据库。
显示dbs
4.删除当前使用的数据库
db . drop database();
5.从指定的主机克隆数据库。
db . clone database(" 127 . 0 . 0 . 1 ");将指定机器上数据库的数据克隆到当前数据库。
6.将指定的数据库数据从指定的计算机复制到数据库。
db.copyDatabase(mydb , temp , 127 . 0 . 0 . 1 );将本机的mydb数据复制到临时数据库中。
7.修复当前数据库
db . repair database();
8.检查当前使用的数据库。
db . getname();
db;dbgetname方法与dbgetname方法效果相同,可以查询当前使用的数据库。
9.显示当前数据库状态
db . stats();
10.当前数据库版本
db . version();
1.检查当前数据库的链接机器地址。
db . get mongo();
集合集合
1.创建聚集集(表)
db.createCollection("collName ",{size: 20,capped: 5,max:100 });
2.获取具有指定名称的聚合集(表)。
db . get collection( account );
3.获取当前数据库的所有聚集集
db . getcollectionnames();
4.显示当前数据库的所有聚集索引的状态
db . printcollectionstats();
用户相关性
1.添加用户。
db . adduser( name );
db.addUser(userName , pwd123 ,true);添加用户,设置密码,只读。
2.数据库认证和安全模式
db.auth(用户名, 123123 );
3.显示所有当前用户。
显示用户;
4.删除用户。
db.removeUser(用户名);
其他的
1.查询以前的错误信息。
db . getpreverror();
2.清除错误记录
db . reset error();
查看聚合集的基本信息。
1.查看帮助db . your coll . help();
2.查询当前集合中的数据个数db . your coll . count();
3.检查数据空间大小db . userinfo . datasize();
4.获取当前聚合集所在的db db . userinfo . getdb();
5.获取当前聚合状态db . userinfo . stats();
6.获取聚合总大小db . userinfo . total size();
7.聚合集db.userInfo.storageSize()的存储空间大小;
8.分片版本信息db.userInfo.getShardVersion()
9、聚集集合重命名db。用户信息。重命名集合(“用户”);将用户信息重命名为用户
10、删除当前聚集集合db。用户信息。drop();
聚集集合查询
1、查询所有记录
db。用户信息。find();
相当于:从用户信息中选择*
默认每页显示20条记录,当显示不下的情况下,可以用它迭代命令查询下一页数据。注意:键入它命令不能带";"
但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize=50这样每页就显示50条记录了。
2、查询去掉后的当前聚集集合中的某列的重复数据
db。用户信息。distinct(“名称”);
会过滤掉名字中的相同数据
相当于:从用户信息中选择地区名称;
3、查询年龄=22岁的记录
db。用户信息。find({ age :22 });
相当于:从用户信息中选择*其中年龄=22;
4、查询22岁的记录
db。用户信息。查找({ age:{ $ gt:22 } });
相当于:从用户信息中选择*凡年龄22;
5、查询22岁的记录
db。用户信息。查找({ age:{ $ lt:22 } });
相当于:从用户信息中选择*凡年龄22;
6、查询年龄=25岁的记录
db。用户信息。查找({年龄:{ $ GTE:25 } });
相当于:从用户信息中选择*其中年龄=25;
7、查询年龄=25岁的记录
db。用户信息。find({ age:{ $ LTE:25 } });
8、查询年龄=23岁并且年龄=26岁
db.userInfo.find({age: {$gte: 23,$ LTE:26 } });
9、查询名字中包含蒙戈的数据
db。用户信息。查找({ name:/mongo/});
//相当于%%
select * from userInfo,其中名称类似于" % mongo % ";
10、查询名字中以蒙戈开头的
db。用户信息。查找({姓名:/^mongo/});
select * from userInfo,其中名称类似于“mongo %”;
11、查询指定列姓名、年龄数据
db.userInfo.find({},{姓名:1,年龄:1 });
相当于:从用户信息中选择姓名、年龄;
当然名字也可以用真实的或假的,当用图雷的情况下河名称:1效果一样,如果用错误的就是排除姓名,显示名字以外的列信息。
12、查询指定列姓名、年龄数据,25岁
db。用户信息。查找({年龄:{ $ gt:25 } },{姓名:1,年龄:1 });
相当于:从用户信息中选择姓名、年龄,其中年龄为25岁;
13、按照年龄排序
升序:db.userInfo.find().排序({年龄:1 });
降序:db.userInfo.find().排序({年龄:-1 });
14、查询姓名张三,年龄22岁的数据
db。用户信息。查找({姓名:张三,年龄:22 });
相当于:从用户信息中选择*其中姓名=张三,年龄= 22 ;
15、查询前5条数据
db.userInfo.find().极限(5);
相当于:从用户信息中选择top 5 *;
16、查询10条以后的数据
db.userInfo.find().跳过(10);
相当于:从用户信息中选择*其中编号不在(
从用户信息中选择前10名*
);
17、查询在5-10之间的数据
db.userInfo.find().限制(10)。跳过(5);
可用于分页,限制是页面大小,跳过是第几页*页面大小
18、或者与查询
db。用户信息。find({ $ or:[{年龄:22 },{年龄:25 }]});
相当于:从用户信息中选择*其中年龄=22或年龄=25;
19、查询第一条数据
db。用户信息。findone();
相当于:从用户信息中选择top 1 *;
db.userInfo.find().极限(1);
20、查询某个结果集的记录条数
db。用户信息。找到({年龄:{ $ GTE:25 } }).count();
相当于:从userInfo中选择count(*),其中年龄=20岁
21、按照某列进行排序
db。用户信息。查找({ sex:{ $ exists:true } }).count();
相当于:从用户信息中选择计数(性别);
索引
1、创建索引
db。用户信息。确保索引({ name:1 });
db。用户信息。确保索引({ name:1,ts:-1 });
2、查询当前聚集集合所有索引
db。用户信息。getindexes();
3、查看总索引记录大小
db。用户信息。total indexsize();
4、读取当前集合的所有指数信息
db。用户。reindex();
5、删除指定索引
db。用户。删除索引( name _ 1 );
6、删除所有索引索引
db。用户。删除索引();
修改、添加、删除集合数据
1、添加
db。用户。保存({姓名:张三,年龄:25,性别:真});
添加的数据的数据列,没有固定,根据添加的数据为准
2、修改
db.users.update({age: 25},{$set: {name: changeName}},false,true);
相当于:更新用户集name=changeName ,其中年龄=25岁
db.users.update({name: Lisi},{$inc: {age: 50}},false,true);
相当于:更新用户set age=age50其中name= Lisi
db.users.update({name: Lisi},{$inc: {age: 50},$set: {name: hoho}},false,true);
相当于:更新用户集age=age50,name= hoho 其中name= Lisi
3.删除
db . users . remove({ age:132 });
4.查询、修改和删除
db.users.findAndModify({
查询:{年龄:{$gte: 25}},
排序:{年龄:-1},
更新:{$set: {name: a2},$inc: {age: 2}},
移除:真
});
db . run command({ findandmodify: users ,
查询:{年龄:{$gte: 25}},
排序:{年龄:-1},
更新:{$set: {name: a2},$inc: {age: 2}},
移除:真
});
语句块操作
1.简单的Hello World
print(Hello World!);
这个方法调用print函数并写出“Hello World!”直接。效果是一样的;
2.将对象转换为json
to JSON(new Object());
tojson(新对象( a ));
3.循环添加数据。
for(var I=0;i 30i ) {
.db . users . save({姓名: u_ i,年龄:22 i,性别:I % 2 });
.};
这样30条数据循环相加,括号也可以省略。
for(var I=0;i 30I)db . users . save({姓名: u_ i,年龄:22 i,性别:I % 2 });
也有可能。使用db.users.find()查询时,在一页无法显示多条数据的情况下,可以使用它在下一页查看信息;
4.查找光标查询
var cursor=db . users . find();
while (cursor.hasNext()) {
print JSON(cursor . next());
}
这样,所有的用户信息都可以被查询,同样可以被写入。
var cursor=db . users . find();
while(cursor . has next()){ print JSON(cursor . next);}
也可以省略{}符号。
5.forEach迭代循环
db.users.find()。forEach(print JSON);
必须在forEach中传递一个函数来处理每次迭代的数据信息。
6.将查找光标视为数组。
var cursor=db . users . find();
光标[4];
获取下标索引为4的数据。
既然可以当作数组来处理,就可以得到它的长度:cursor . length();或者cursor . count();
这样,我们也可以在一个循环中显示数据。
for (var i=0,len=c . length();我lenI)print JSON(c[I]);
7.将查找光标转换成数组。
var arr=db.users.find()。to array();
print JSON(arr[2]);
使用toArray方法将其转换为数组。
8.定制我们自己的查询结果
仅显示年龄=28岁的数据和年龄列。
db.users.find({age: {$lte: 28}},{age: 1})。forEach(print JSON);
db.users.find({age: {$lte: 28}},{age: true})。forEach(print JSON);
排除的年龄列
db.users.find({age: {$lte: 28}},{age: false})。forEach(print JSON);
9.forEach传递函数显示信息
db.things.find({x:4})。forEach(function(x){ print(tojson(x));});
用mongod启动数据库进程。这些参数解释如下:
- dbpath指定数据库的目录。
- port指定数据库的端口,默认情况下为27017。
-bind _ IP绑定IP
- directoryperdb为每个数据库创建一个独立的子目录
- logpath指定日志存储目录。
- logappend指定日志生成方法(追加/覆盖)
- pidfilepath指定进程文件路径,如果未指定,则不会生成任何进程。
-密钥文件群集模式的密钥标识
- cpu定期显示cpu和IO利用率。
-日志启用日志记录
- ipv6启用ipv6支持。
- nssize指定的大小。ns文件,以MB为单位,默认值为16M,最大值为2GB。
- maxConns最大并发连接数
- notablescan不允许表扫描。
- quota限制每个数据库的文件数量,默认情况下为8个。
- quotaFiles每个数据库中的文件数量,与-quota参数匹配。
- noprealloc关闭数据文件的预分配功能。
mongod 命令常用参数
1、常用参数
Mongod是MongoDB系统的主守护进程,用于处理数据请求、访问数据和执行后台管理操作。它必须在访问MongoDB数据库之前启动。
启动mongod时,常用的参数有:
- dbpath db_path:存储MongoDB数据文件的目录。
- directoryperdb:指定每个数据库存储在一个目录中,该目录位于- dbpath指定的目录中,每个子目录对应一个数据库名称。使用单独的目录存储每个数据库的数据。这些目录位于- dbpath目录下,每个子目录名称都对应于数据库名称。
-logpathlog _ path:指定mongod记录的文件。
- fork:以后台守护程序的形式运行服务。
-日志:启动日志功能,保存操作日志,减少单机故障恢复时间。
- config(或-f)config_file_path:配置文件,用于指定运行时选项。
- bind_ip ip address:指定外部服务的绑定ip地址。
-港口港口:对外服务窗口
- auth:启用身份验证以验证用户权限控制。
- syncdelayvalue:系统刷新磁盘的时间,单位为秒,默认为60s。
- replSet setname:将mongod作为副本集启动,副本集的标识为setname。
2.1通过命令启动,默认dbpath为C:datadb
mongod - dbpath=C:datadb
2.2从配置文档开始。
将mongod的命令参数写入配置文档,从参数-f开始。
mongod-f C: data db MongoDB _ config . config
2.3以守护模式启动
当启动MongoDB的进程关闭时,MongoDB也会关闭。只需使用- fork参数启动MongoDB作为后台守护进程。
蒙哥德福克
3.检查mongod的启动参数
db.serverCmdLineOpts()
在启动mongo shell时,常用的参数是:
- nodb:防止mongo在启动时连接到数据库实例;
-portport:指定mongo连接Mongo监听的TCP端口,默认端口值为27017;
- host hostname:指定mongod运行的服务器。如果没有指定这个参数,mongo会尝试连接本地运行的mongod实例(localhost);
Db address:指定mongo所连接的数据库。
- username/-u username和- password/-p password:指定访问MongoDB数据库的帐户和密码。只有通过认证,用户才能访问数据库;
- authenticationDatabase dbname:指定在其中创建用户的数据库。创建用户时,数据库是认证数据库;用户的。