成功启动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查看基本操作命令:
show DBS:show database list show collections:显示当前数据库中的集合(类似于关系数据库中的表)show users:显示用户。
使用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.帮助查看命令提示符
help
db.help();
db.yourColl.help();
db.youColl.find().help();
rs.help();
2.切换/创建数据库
使用yourDB创建表时,会自动创建当前数据库。
3.查询所有数据库
show dbs;
4.删除当前使用的数据库。
db.dropDatabase();
5.从指定的主机克隆数据库。
db . clone database(" 127 . 0 . 0 . 1 ");将指定机器上数据库的数据克隆到当前数据库。
6.将指定的数据库数据从指定的计算机复制到数据库。
db.copyDatabase('mydb '' temp '' 127 . 0 . 0 . 1 ');将本机的mydb数据复制到临时数据库。
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(“collName”, {size: 20, capped: 5, max: 100});
2、得到指定名称的聚集集合(table)
db.getCollection('account');
3、得到当前db的所有聚集集合
db.getCollectionNames();
4、显示当前db所有聚集索引的状态
db.printCollectionStats();
用户相关
1、添加一个用户
db.addUser('name');
db.addUser('userName', 'pwd123', true); 添加用户、设置密码、是否只读
2、数据库认证、安全模式
db.auth('userName', '123123');
3、显示当前所有用户
show users;
4、删除用户
db.removeUser('userName');
其他
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('users'); 将userInfo重命名为users10、删除当前聚集集合db.userInfo.drop();
聚集集合查询
2、查询去掉后的当前聚集集合中的某列的重复数据db.userInfo.distinct('name');会过滤掉name中的相同数据相当于:select distict name from userInfo;3、查询age=22的记录db.userInfo.find({'age': 22});相当于: select * from userInfo where age=22;4、查询age 22的记录db.userInfo.find({age: {$gt: 22}});相当于:select * from userInfo where age 22;5、查询age 22的记录db.userInfo.find({age: {$lt: 22}});相当于:select * from userInfo where age 22;6、查询age=25的记录db.userInfo.find({age: {$gte: 25}});相当于:select * from userInfo where age=25;7、查询age=25的记录db.userInfo.find({age: {$lte: 25}});8、查询age=23 并且age=26db.userInfo.find({age: {$gte: 23, $lte: 26}});9、查询name中包含mongo的数据db.userInfo.find({name: /mongo/});//相当于%%select * from userInfo where name like ‘%mongo%’;10、查询name中以mongo开头的db.userInfo.find({name: /^mongo/});select * from userInfo where name like ‘mongo%’;11、查询指定列name、age数据db.userInfo.find({}, {name: 1, age: 1});相当于:select name, age from userInfo;当然name也可以用true或false,当用ture的情况下河name:1效果一样,
索引
1、创建索引db.userInfo.ensureIndex({name: 1});db.userInfo.ensureIndex({name: 1, ts: -1});2、查询当前聚集集合所有索引db.userInfo.getIndexes();3、查看总索引记录大小db.userInfo.totalIndexSize();4、读取当前集合的所有index信息db.users.reIndex();5、删除指定索引db.users.dropIndex('name_1');6、删除所有索引索引db.users.dropIndexes();
修改、添加、删除集合数据
根据添加的数据为准2、修改db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);相当于:update users set name=‘changeName’ where age=25;db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);相当于:update users set age=age + 50 where name=‘Lisi’;db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);相当于:update users set age=age + 50, name=‘hoho’ where name=‘Lisi’;3、删除db.users.remove({age: 132});4、查询修改删除db.users.findAndModify({ query: {age: {$gte: 25}}, sort: {age: -1}, update: {$set: {name: 'a2'}, $inc: {age: 2}}, remove: true});db.runCommand({ findandmodify : 'users', query: {age: {$gte: 25}}, sort: {age: -1}, update: {$set: {name: 'a2'}, $inc: {age: 2}}, remove: true});
语句块操作
和直接写入'Hello World!'的效果是一样的;2、将一个对象转换成jsontojson(new Object());tojson(new Object('a'));3、循环添加数据for (var i=0; i 30; i++) {. db.users.save({name: 'u_' + i, age: 22 + i, sex: i % 2}); };这样就循环添加了30条数据,
用mongod 启动数据库进程,参数解释如下:--dbpath 指定数据库的目录--port 指定数据库的端口,默认是27017--bind_ip 绑定IP--directoryperdb为每个db创建一个独立子目录--logpath指定日志存放目录--logappend指定日志生成方式(追加/覆盖)--pidfilepath 指定进程文件路径,
mongod 命令常用参数
1,常用参数
mongod 是MongoDB系统的主要守护进程,用于处理数据请求,数据访问和执行后台管理操作,必须启动,才能访问MongoDB数据库。
在启动mongod时,常用的参数是:
--dbpath db_path:存储MongoDB数据文件的目录
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;