成功启动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.帮助查看命令提示符
帮助
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;Db和getName方法效果相同,都可以查询当前使用的数据库。
9.显示当前数据库状态。
db . stats();
10.当前数据库版本
db . version();
11.检查当前数据库的链接机器的地址。
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。你的同事help();2、查询当前集合的数据条数db。您的coll . count();3、查看数据空间大小db。用户信息。datasize();4、得到当前聚集集合所在的db db。用户信息。getdb();5、得到当前聚集的状态db。用户信息。stats();6、得到聚集集合总大小db。用户信息。总大小();7、聚集集合储存空间大小db。用户信息。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岁并且年龄=26db。用户信息。find({年龄:{ $ 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、查询指定列姓名、年龄数据,年龄25db。用户信息。查找({年龄:{$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);相当于:select * from userInfo where id not in(select top 10 * from userInfo);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(*),其中年龄=2021,按照某列进行排序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 . users . save({姓名:'张三'年龄:25,性别:真});添加数据的数据栏不固定,以添加的数据为准。2.修改db.users.update ({age: 25},{$ set: {name:' changename'}},false,true);相当于:update users set name=' changename '其中age=25db.users.update({name: 'Lisi'},{$inc: {age: 50}},false,true);相当于:更新用户set age=age 50其中name=' Lisidb.users.update({name: 'Lisi'},{$inc: {age: 50},$set: {name: 'hoho'}},false,true);相当于:更新用户集age=age 50,name=' hoho '其中name=' Lisi3.删除db . users . remove({ age:132 });4.查询、修改和删除db . users . findanddefine({查询:{$ GTE: 25}},排序:{年龄:-1},更新:{$集:{姓名:' a2'},$公司:{年龄:2}},删除:真。db . run command({ findandmodify:' users '查询:{$gte: 25}},排序:{$set: {name: 'a2'},Inc:$ age:2 } },remove:true });
语句块操作
1.简单的Hello Worldprint('Hello World!');这种写法调用print函数,直接写出‘Hello World!’效果是一样的;2.将一个对象转换成jsontojson(new Object());tojson(新对象(' a '));3.为(var I=0;i 30i ) {.db . users . save({姓名:' u_' i,年龄:22 i,性别:I % 2 });};这样,30条数据循环相加,括号的写法为(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 . has next()){ print JSON(cursor . next());}这样可以查询所有用户信息,也可以写成var cursor=db . users . find();while(cursor . has next()){ print JSON(cursor . next);}也可以省略{} 5、forEach迭代循环db.users.find()。foreach(打印JSON);必须在forEach中传递一个函数来处理每次迭代的数据信息。6.将查找光标视为数组,处理var cursor=db . users . find();光标[4];由于下标索引为4的数据可以作为数组处理,所以可以得到它的长度:cursor . length();或者cursor . count();然后我们还可以循环显示(var i=0,len=c.length())的数据;我lenI)print JSON(c[I]);7.将查找光标转换为数组var arr=db.users.find()。to array();print JSON(arr[2]);通过to array方法将其转换为数组8。自定义我们自己的查询结果,只显示年龄=28的数据,并且只显示年龄db.users.find ({age: {$ LTE: 28}},{age: 1})的列数据。Foreach(打印JSON);db.users.find({age: {$lte: 28}},{age: true})。forEach(print JSON);db.users.find列不包括年龄({age: {$ LTE: 28}},{age: false})。foreach(打印JSON);9.forEach传递函数显示db.things.find ({x: 4})信息。foreach(function(x){ print(tojson(x));});
用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,可以关闭数据文件的预分配功能。
蒙古语命令的公共参数
1、常用参数
MongoGod是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:\data\db。
mongod - dbpath=C:\data\db
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连接mongodGod的TCP端口,默认端口值为27017;
- host hostname:指定运行mongodGod的服务器。如果没有指定这个参数,mongo会尝试连接到运行在localhost中的mongodGod实例;
Db address:指定mongo所连接的数据库。
- username/-u username和- password/-p password:指定访问MongoDB数据库的帐号和密码,用户只有通过身份验证才能访问数据库;
- authenticationDatabase dbname:指定在其中创建用户的数据库。当用户是在哪个数据库中创建的,该数据库就是用户的认证数据库;