成功启动MongoDB后,再打开一个命令行窗口输入mongo,就能进行数据库的一些操作。输入help可以看到基本操作命令,只不过MongoDB没创建数据库的命令,但有类似的命令
mongod.exe - 数据库的服务器端,等于mysql的 mysqld命令,启动服务器端
mongo.exe - 数据库的推广客户端,等于mysql的mysql命令,打开管理控制台
mongo 是一个交互式的js shell,提供了一个强大的js 环境,为DBA管理MongoDB,developer查看MongoDB数据提供接口。通过mongo shell和MongoDB进行交互,查看和修改MongoDB数据库,管理MongoDB数据库,维护MongoDB的副本集和分片集群,是一个很强大的工具。
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就能进行数据库的一些操作。
输入help可以看到基本操作命令:
show dbs:显示数据库列表
show collections:显示目前数据库中的集合(类似关系数据库中的表)
show users:显示用户use db name:切换目前数据库,这和MS-SQL里面的意思一样
db.help:显示数据库操作命令,里面有不少的命令
db.foo.help:显示集合操作命令,同样有不少的命令,foo指的是目前数据库下,一个叫foo的集合,并不是真的意义上的命令db.foo.find:对于目前数据库中的foo集合进行数据查找(因为没条件,会列出所有数据)
db.foo.find:对于目前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1MongoDB没创建数据库的命令,但有类似的命令。
如:假如你想创建一个myTest的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection),如此就能创建一个名叫myTest的数据库。
数据库常用命令
1、Help查询命令提示
help
db.help;
db.yourColl.help;
db.youColl.find.help;
rs.help;
2、切换/创建数据库
use yourDB;当创建一个集合的时候会自动创建目前数据库
3、查看所有数据库
show dbs;
4、删除目前用数据库
db.dropDatabase;
5、从指定主机上克隆数据库
db.cloneDatabase; 将指定机器上的数据库的数据克隆到目前数据库
6、从指定的机器上复制指定数据库数据到某个数据库
db.copyDatabase;将本机的mydb的数据复制到temp数据库中
7、修复目前数据库
db.repairDatabase;
8、查询目前用的数据库
db.getName;
db; db和getName办法是一样的成效,都可以查看目前用的数据库
9、显示目前db状况
db.stats;
10、目前db版本
db.version;
11、查询目前db的链接机器地址
db.getMongo;
Collection聚集集合
1、创建一个聚集集合(table)
db.createCollection;
2、得到指定名字的聚集集合(table)
db.getCollection;
3、得到目前db的所有聚集集合
db.getCollectionNames;
4、显示目前db所有聚集索引的状况
db.printCollectionStats;
用户有关
1、添加一个用户
db.addUser;
db.addUser; 添加用户、设置密码、是不是只读
2、数据库认证、安全模式
db.auth;
3、显示目前所有用户
show users;
4、删除用户
db.removeUser;
其他
1、查看之前的错误信息
db.getPrevError;
2、清除错误记录
db.resetError;
查询聚集集合基本信息
1、查询帮助 db.yourColl.help;
2、查看目前集合的数据条数 db.yourColl.count;
3、查询数据空间大小 db.userInfo.dataSize;4、得到目前聚集集合所在的db db.userInfo.getDB;
5、得到目前聚集的状况 db.userInfo.stats;6、得到聚集集合总大小 db.userInfo.totalSize;
7、聚集集合储存空间大小 db.userInfo.storageSize;8、Shard版本信息 db.userInfo.getShardVersion
9、聚集集合重命名 db.userInfo.renameCollection; 将userInfo重命名为users10、删除目前聚集集合 db.userInfo.drop;
聚集集合查看
1、查看所有记录
db.userInfo.find;等于:select* from userInfo;
默认每页显示20条记录,当显示不下的状况下,可以用it迭代命令查看下一页数据。注意:键入it命令不可以带;但你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;如此每页就显示50条记录了。
2、查看去掉后的目前聚集集合中的某列的重复数据
db.userInfo.distinct;会过滤掉name中的相同数据
等于:select distict name from userInfo;3、查看age = 22的记录db.userInfo.find;
等于: select * from userInfo where age = 22;4、查看age 22的记录db.userInfo.find;
等于:select * from userInfo where age 22;5、查看age 22的记录db.userInfo.find;
等于:select * from userInfo where age 22;6、查看age = 25的记录db.userInfo.find;
等于:select * from userInfo where age = 25;7、查看age = 25的记录db.userInfo.find;
8、查看age = 23 并且 age = 26
db.userInfo.find;9、查看name中包括 mongo的数据db.userInfo.find;
//等于%%select * from userInfo where name like %mongo%;
10、查看name中以mongo开头的
db.userInfo.find;select * from userInfo where name like mongo%;
11、查看指定列name、age数据
db.userInfo.find;等于:select name, age from userInfo;
当然name也可以用true或false,当用ture的状况下河name:1成效一样,假如用false就是排除name,显示name以外的列信息。12、查看指定列name、age数据, age 25db.userInfo.find;
等于:select name, age from userInfo where age 25;13、根据年龄排序升序:db.userInfo.find.sort;
降序:db.userInfo.find.sort;14、查看name = zhangsan, age = 22的数据db.userInfo.find;
等于:select * from userInfo where name = zhangsan and age = 22;15、查看前5条数据db.userInfo.find.limit;
等于:selectTOP 5 * from userInfo;16、查看10条未来的数据db.userInfo.find.skip;
等于:select * from userInfo where id not in ;17、查看在5-10之间的数据db.userInfo.find.limit.skip;
可用于分页,limit是pageSize,skip是第几页*pageSize18、or与 查看db.userInfo.find;
等于:select * from userInfo where age = 22 or age = 25;19、查看第一条数据db.userInfo.findOne;
等于:selectTOP 1 * from userInfo;db.userInfo.find.limit;
20、查看某个结果集的记录条数
db.userInfo.find.count;等于:select count from userInfo where age = 20;
21、根据某列进行排序
db.userInfo.find.count;等于:select count from userInfo;
索引
1、创建索引
db.userInfo.ensureIndex;db.userInfo.ensureIndex;
2、查看目前聚集集合所有索引
db.userInfo.getIndexes;3、查询总索引记录大小db.userInfo.totalIndexSize;
4、读取目前集合的所有index信息
db.users.reIndex;5、删除指定索引db.users.dropIndex;
6、删除所有索引索引
db.users.dropIndexes;修改、添加、删除集合数据
1、添加
db.users.save;
添加的数据的数据列,没固定,依据添加的数据为准2、修改db.users.update;
等于:update users set name = changeName where age = 25;db.users.update;等于:update users set age = age + 50 where name = Lisi;
db.users.update;
等于:update users set age = age + 50, name = hoho where name = Lisi;3、删除db.users.remove;
4、查看修改删除
db.users.findAndModify;db.runCommand;语句块操作
1、简单Hello World
print;
这种写法调用了print函数,和直接写入Hello World!的成效是一样的;2、将一个对象转换成jsontojson);
tojson);3、循环添加数据for {
... db.users.save;... };
如此就循环添加了30条数据,同样也可以省略括号的写法for db.users.save;
也是可以的,当你用db.users.find查看的时候,显示多条数据而没办法一页显示的状况下,可以用it查询下一页的信息;4、find 游标查看var cursor = db.users.find;
while ) {printjson);
}如此就查看所有些users信息,同样可以如此写
var cursor = db.users.find;while ) { printjson; }
同样可以省略{}号5、forEach迭代循环db.users.find.forEach;
forEach中需要传递一个函数来处置每条迭代的数据信息6、将find游标当数组处置var cursor = db.users.find;
cursor[4];获得下标索引为4的那条数据
既然可以当做数组处置,那样就能获得它的长度:cursor.length;或者cursor.count;那样大家也可以用循环显示数据
for ; i len; i++) printjson;7、将find游标转换成数组var arr = db.users.find.toArray;
printjson;用toArray办法将它转换为数组
8、定制大家我们的查看结果
只显示age = 28的并且只显示age这列数据db.users.find.forEach;
db.users.find.forEach;排除age的列
db.users.find.forEach;9、forEach传递函数显示信息db.things.find.forEach {print);});
用mongod 启动数据库进程,参数讲解如下:
--dbpath 指定数据库的目录--port 指定数据库的端口,默认是27017
--bind_ip 绑定IP--directoryperdb为每一个db创建一个独立子目录
--logpath指定日志存放目录--logappend指定日志生成方法
--pidfilepath 指定进程文件路径,假如不指定,那样将不产生进程--keyFile 集群模式的重点标识
--cpu 周期性的显示CPU和IO的借助率--journal 启用日志
--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:指定每一个数据库单独存储在一个目录中(directory),该目录坐落于--dbpath指定的目录下,每个子目录都对应一个数据库名字。Uses a separate directory to store data for each database. The directories are under the --dbpath directory, and each subdirectory name corresponds to the database name.
--logpath log_path:指定mongod记录日志的文件
--fork:将来台deamon形式运行服务
--journal:开始日志功能,通过保存操作日志来减少单机问题的恢复时间
--config(或-f)config_file_path:配置文件,用于指定runtime options
--bind_ip ip address:指定对外服务的绑定IP地址
--port port:对外服务窗口
--auth:启用验证,验证用户权限控制
--syncdelayvalue:系统刷新disk的时间,单位是second,默认是60s
--replSet setname:以副本集方法启动mongod,副本集的标识是setname
2.1 以命令方法启动,默认的dbpath是 C:\data\db
mongod --dbpath=C:\data\db
2.2 以配置文档的方法启动
将mongod的命令参数写入配置文档,以参数-f 启动
mongod -f C:\data\db\mongodb_config.config
2.3 以daemon方法启动
当启动MongoDB的进程关闭后,MongoDB随之关闭,仅需用--fork参数,就能使MongoDB将来台守护进程方法启动。
mongod -fork
3,查询mongod的启动参数
db.serverCmdLineOpts
在启动mongo shell时,常见的参数是:
--nodb:阻止mongo在启动时连接到数据库实例;
--port port:指定mongo连接到mongod监听的TCP端口,默认的端口值是27017;
--host hostname:指定mongod运行的server,假如没指定该参数,那样mongo尝试连接运行在当地(localhost)的mongod实例;
db address:指定mongo连接的数据库
--username/-u username 和--password/-p password:指定访问MongoDB数据库的账户和密码,只有当认证通过后,用户才能访问数据库;
--authenticationDatabase dbname:指定创建User的数据库,在什么数据库中创建User时,该数据库就是User的Authentication Database;