成功啟動mongoDB后,打開命令行窗口,進(jìn)入Mongo,然后就可以對數(shù)據(jù)庫進(jìn)行一些操作了。進(jìn)入help可以看到基本的操作命令,只是MongoDB沒有創(chuàng)建數(shù)據(jù)庫的命令,但是它有一個類似的命令。
mongod . exe-數(shù)據(jù)庫的服務(wù)器端相當(dāng)于mysql的mysqld命令,啟動服務(wù)器端。
mongo . exe——數(shù)據(jù)庫的客戶端,相當(dāng)于mysql的mysql命令,打開管理控制臺。
Mongo是一個交互式的js shell,它提供了一個強(qiáng)大的js環(huán)境,并提供了一個供DBA管理MongoDB和開發(fā)者查詢MongoDB數(shù)據(jù)的接口。
通過mongo shell和MongoDB的交互,查詢和修改MongoDB數(shù)據(jù)庫,管理MongoDB數(shù)據(jù)庫,維護(hù)MongoDB的副本集和碎片簇,是一個非常強(qiáng)大的工具。
成功啟動mongoDB后,打開命令行窗口,進(jìn)入Mongo,然后就可以對數(shù)據(jù)庫進(jìn)行一些操作了。
進(jìn)入help查看基本操作命令:
show DBS:show database list show collections:顯示當(dāng)前數(shù)據(jù)庫中的集合(類似于關(guān)系數(shù)據(jù)庫中的表)show users:顯示用戶。
使用db name:切換當(dāng)前數(shù)據(jù)庫,這與MS-SQL中的意思相同。db.help():顯示數(shù)據(jù)庫操作命令,里面有很多命令。db.foo.help():顯示集合操作命令,命令也很多。
Foo指的是當(dāng)前數(shù)據(jù)庫中一個名為foo的集合,不是真正的命令db.foo.find():對當(dāng)前數(shù)據(jù)庫中的foo集合進(jìn)行數(shù)據(jù)搜索(因?yàn)闆]有條件,
會列出所有數(shù)據(jù))db.foo.find( {a: 1}):搜索當(dāng)前數(shù)據(jù)庫中的foo集合,前提是數(shù)據(jù)中有一個名為A的屬性,A的值為1。
MongoDB沒有創(chuàng)建數(shù)據(jù)庫的命令,但是它有一個類似的命令。
例如,如果您想要創(chuàng)建一個“myTest”數(shù)據(jù)庫,首先運(yùn)行use myTest命令。
然后做一些操作(比如db.createCollection('user ')),這樣就可以創(chuàng)建一個名為“myTest”的數(shù)據(jù)庫。
數(shù)據(jù)庫常用命令
1.幫助查看命令提示符
help
db.help();
db.yourColl.help();
db.youColl.find().help();
rs.help();
2.切換/創(chuàng)建數(shù)據(jù)庫
使用yourDB創(chuàng)建表時,會自動創(chuàng)建當(dāng)前數(shù)據(jù)庫。
3.查詢所有數(shù)據(jù)庫
show dbs;
4.刪除當(dāng)前使用的數(shù)據(jù)庫。
db.dropDatabase();
5.從指定的主機(jī)克隆數(shù)據(jù)庫。
db . clone database(" 127 . 0 . 0 . 1 ");將指定機(jī)器上數(shù)據(jù)庫的數(shù)據(jù)克隆到當(dāng)前數(shù)據(jù)庫。
6.將指定的數(shù)據(jù)庫數(shù)據(jù)從指定的計算機(jī)復(fù)制到數(shù)據(jù)庫。
db.copyDatabase('mydb '' temp '' 127 . 0 . 0 . 1 ');將本機(jī)的mydb數(shù)據(jù)復(fù)制到臨時數(shù)據(jù)庫。
7.修復(fù)當(dāng)前數(shù)據(jù)庫
db.repairDatabase();
8、查看當(dāng)前使用的數(shù)據(jù)庫
db.getName();
db; db和getName方法是一樣的效果,都可以查詢當(dāng)前使用的數(shù)據(jù)庫
9、顯示當(dāng)前db狀態(tài)
db.stats();
10、當(dāng)前db版本
db.version();
11、查看當(dāng)前db的鏈接機(jī)器地址
db.getMongo();
Collection聚集集合
1、創(chuàng)建一個聚集集合(table)
db.createCollection(“collName”, {size: 20, capped: 5, max: 100});
2、得到指定名稱的聚集集合(table)
db.getCollection('account');
3、得到當(dāng)前db的所有聚集集合
db.getCollectionNames();
4、顯示當(dāng)前db所有聚集索引的狀態(tài)
db.printCollectionStats();
用戶相關(guān)
1、添加一個用戶
db.addUser('name');
db.addUser('userName', 'pwd123', true); 添加用戶、設(shè)置密碼、是否只讀
2、數(shù)據(jù)庫認(rèn)證、安全模式
db.auth('userName', '123123');
3、顯示當(dāng)前所有用戶
show users;
4、刪除用戶
db.removeUser('userName');
其他
1、查詢之前的錯誤信息
db.getPrevError();
2、清除錯誤記錄
db.resetError();
查看聚集集合基本信息
1、查看幫助db.yourColl.help();2、查詢當(dāng)前集合的數(shù)據(jù)條數(shù)db.yourColl.count();3、查看數(shù)據(jù)空間大小db.userInfo.dataSize();4、得到當(dāng)前聚集集合所在的db db.userInfo.getDB();5、得到當(dāng)前聚集的狀態(tài)db.userInfo.stats();6、得到聚集集合總大小db.userInfo.totalSize();7、聚集集合儲存空間大小db.userInfo.storageSize();8、Shard版本信息db.userInfo.getShardVersion()9、聚集集合重命名db.userInfo.renameCollection('users'); 將userInfo重命名為users10、刪除當(dāng)前聚集集合db.userInfo.drop();
聚集集合查詢
2、查詢?nèi)サ艉蟮漠?dāng)前聚集集合中的某列的重復(fù)數(shù)據(jù)db.userInfo.distinct('name');會過濾掉name中的相同數(shù)據(jù)相當(dāng)于:select distict name from userInfo;3、查詢age=22的記錄db.userInfo.find({'age': 22});相當(dāng)于: select * from userInfo where age=22;4、查詢age 22的記錄db.userInfo.find({age: {$gt: 22}});相當(dāng)于:select * from userInfo where age 22;5、查詢age 22的記錄db.userInfo.find({age: {$lt: 22}});相當(dāng)于:select * from userInfo where age 22;6、查詢age=25的記錄db.userInfo.find({age: {$gte: 25}});相當(dāng)于: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的數(shù)據(jù)db.userInfo.find({name: /mongo/});//相當(dāng)于%%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數(shù)據(jù)db.userInfo.find({}, {name: 1, age: 1});相當(dāng)于:select name, age from userInfo;當(dāng)然name也可以用true或false,當(dāng)用ture的情況下河name:1效果一樣,
索引
1、創(chuàng)建索引db.userInfo.ensureIndex({name: 1});db.userInfo.ensureIndex({name: 1, ts: -1});2、查詢當(dāng)前聚集集合所有索引db.userInfo.getIndexes();3、查看總索引記錄大小db.userInfo.totalIndexSize();4、讀取當(dāng)前集合的所有index信息db.users.reIndex();5、刪除指定索引db.users.dropIndex('name_1');6、刪除所有索引索引db.users.dropIndexes();
修改、添加、刪除集合數(shù)據(jù)
根據(jù)添加的數(shù)據(jù)為準(zhǔn)2、修改db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);相當(dāng)于:update users set name=‘changeName’ where age=25;db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);相當(dāng)于:update users set age=age + 50 where name=‘Lisi’;db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);相當(dāng)于: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、將一個對象轉(zhuǎn)換成jsontojson(new Object());tojson(new Object('a'));3、循環(huán)添加數(shù)據(jù)for (var i=0; i 30; i++) {. db.users.save({name: 'u_' + i, age: 22 + i, sex: i % 2}); };這樣就循環(huán)添加了30條數(shù)據(jù),
用mongod 啟動數(shù)據(jù)庫進(jìn)程,參數(shù)解釋如下:--dbpath 指定數(shù)據(jù)庫的目錄--port 指定數(shù)據(jù)庫的端口,默認(rèn)是27017--bind_ip 綁定IP--directoryperdb為每個db創(chuàng)建一個獨(dú)立子目錄--logpath指定日志存放目錄--logappend指定日志生成方式(追加/覆蓋)--pidfilepath 指定進(jìn)程文件路徑,
mongod 命令常用參數(shù)
1,常用參數(shù)
mongod 是MongoDB系統(tǒng)的主要守護(hù)進(jìn)程,用于處理數(shù)據(jù)請求,數(shù)據(jù)訪問和執(zhí)行后臺管理操作,必須啟動,才能訪問MongoDB數(shù)據(jù)庫。
在啟動mongod時,常用的參數(shù)是:
--dbpath db_path:存儲MongoDB數(shù)據(jù)文件的目錄
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形式運(yùn)行服務(wù)
--journal:開始日志功能,通過保存操作日志來降低單機(jī)故障的恢復(fù)時間
--config(或-f)config_file_path:配置文件,用于指定runtime options
--bind_ip ip address:指定對外服務(wù)的綁定IP地址
--port port:對外服務(wù)窗口
--auth:啟用驗(yàn)證,驗(yàn)證用戶權(quán)限控制
--syncdelayvalue:系統(tǒng)刷新disk的時間,單位是second,默認(rèn)是60s
--replSet setname:以副本集方式啟動mongod,副本集的標(biāo)識是setname
2.1 以命令方式啟動,默認(rèn)的dbpath是C:\data\db
mongod --dbpath=C:\data\db
2.2 以配置文檔的方式啟動
將mongod的命令參數(shù)寫入配置文檔,以參數(shù)-f 啟動
mongod -f C:\data\db\mongodb_config.config
2.3 以daemon方式啟動
當(dāng)啟動MongoDB的進(jìn)程關(guān)閉后,MongoDB隨之關(guān)閉,只需要使用--fork參數(shù),就能使MongoDB以后臺守護(hù)進(jìn)程方式啟動。
mongod -fork
3,查看mongod的啟動參數(shù)
db.serverCmdLineOpts()
在啟動mongo shell時,常用的參數(shù)是:
--nodb:阻止mongo在啟動時連接到數(shù)據(jù)庫實(shí)例;
--port port:指定mongo連接到mongod監(jiān)聽的TCP端口,默認(rèn)的端口值是27017;
--host hostname:指定mongod運(yùn)行的server,如果沒有指定該參數(shù),那么mongo嘗試連接運(yùn)行在本地(localhost)的mongod實(shí)例;
db address:指定mongo連接的數(shù)據(jù)庫
--username/-u username 和--password/-p password:指定訪問MongoDB數(shù)據(jù)庫的賬戶和密碼,只有當(dāng)認(rèn)證通過后,用戶才能訪問數(shù)據(jù)庫;
--authenticationDatabase dbname:指定創(chuàng)建User的數(shù)據(jù)庫,在哪個數(shù)據(jù)庫中創(chuàng)建User時,該數(shù)據(jù)庫就是User的Authentication Database;