MongoDB的基本操作
Mongodb中關鍵字種類:
db(數據庫實例級別)
db本身
db.connection 數據庫下的集合信息
db.collection.xxx(
rs(復制集級別)
sh(分片級別)
rs.status() #副本集狀態,一個primary,其它SECONDARY。primary是主,只有primary能寫入,從庫無法插入數據
rs.config() ##獲取配置
rs.slaveOk() #SECONDARY需要聲明是slave才能查看數據
查詢操作
在客戶端指定數據庫進行連接:(默認連接本機test數據庫)
[mongod@MongoDB ~]$ mongo 10.0.0.152/admin MongoDB shell version: 3.2.8 connecting to: 10.0.0.152/admin
> db admin
查看當前數據庫版本
> db.version()
切換數據庫
> use test; switched to db test
顯示當前數據庫
> db test > db.getName() test
查詢所有數據庫
> show dbs; smile 0.000GB local 0.000GB test 0.000GB > show databases; smile 0.000GB local 0.000GB test 0.000GB
查看smile數據庫當前狀態
> use smile;
> db.stats() { "db" : "smile", "collections" : 1, "objects" : 10000, "avgObjSize" : 80, "dataSize" : 800000, "storageSize" : 258048, "numExtents" : 0, "indexes" : 1, "indexSize" : 94208, "ok" : 1 }
查看當前數據庫的連接機器地址
> db.getMongo() connection to 127.0.0.1
1.5.2 數據管理
創建數據庫
> use smile;
說明:
創建數據庫:
當use的時候,系統就會自動創建一個數據庫。
如果use之后沒有創建任何集合。系統就會刪除這個數據庫。
刪除數據庫
> show dbs; smile 0.000GB local 0.000GB test 0.000GB
> use smile switched to db smile
> db.dropDatabase() { "dropped" : "smile", "ok" : 1 }
說明:
刪除數據庫:
如果沒有選擇任何數據庫,會刪除默認的test數據庫
創建集合
方法一:
> use smile; switched to db smile
> db.createCollection('a') { "ok" : 1 }
> db.createCollection('b') { "ok" : 1 }
查看當前數據下的所有集合
> show collections; a b
> db.getCollectionNames() [ "a", "b" ]
方法二:
當插入一個文檔的時候,一個集合就會自動創建。
> use smile; switched to db smile
> db.c.insert({name:'smile'}); WriteResult({ "nInserted" : 1 })
> db.c.insert({url:'http://blog.nmtui.com'}); WriteResult({ "nInserted" : 1 })
查看創建的合集
> db.getCollectionNames() [ "a", "b", "c" ]
查看合集里的內容
> db.c.find() { "_id" : ObjectId("5a4cbcea83ec78b7bea904f8"), "name" : "smile" } { "_id" : ObjectId("5a4cbcfc83ec78b7bea904f9"), "url" : "http://blog.nmtui.com" }
重命名集合
> db.c.renameCollection("smile") { "ok" : 1 }
> db.getCollectionNames() [ "a", "b", "smile" ]
刪除合集
> db.a.drop() true
> db.getCollectionNames() [ "b", "smile" ]
插入1w行數據
> for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); } WriteResult({ "nInserted" : 1 })
查詢集合中的查詢所有記錄
> db.log.find()
注:默認每頁顯示20條記錄,當顯示不下的的情況下,可以用it迭代命令查詢下一頁數據。
> DBQuery.shellBatchSize=50; # 每頁顯示50條記錄 50 app> db.log.findOne() # 查看第1條記錄 app> db.log.count() # 查詢總的記錄數 app> db.log.find({uid:1000}); # 查詢UUID為1000的數據
刪除集合中的記錄數
> db.log.distinct("name") # 查詢去掉當前集合中某列的重復數據 [ "mongodb" ]
> db.log.remove({}) # 刪除集合中所有記錄
WriteResult({ "nRemoved" : }) > db.log.distinct("name"10000) [ ]
查看集合存儲信息
> db.log.stats() # 查看數據狀態
> db.log.dataSize() # 集合中數據的原始大小
> db.log.totalIndexSize() # 集合中索引數據的原始大小
> db.log.totalSize() # 集合中索引+數據壓縮存儲之后的大小
> db.log.storageSize() # 集合中數據壓縮存儲的大小
pretty()使用
> db.log.find({uid:1000}).pretty() { "_id" : ObjectId("5a4c5c0bdf067ab57602f7c2"), "uid" : 1000, "name" : "mongodb", "age" : 6, "date" : ISODate("2018-01-03T04:28:59.343Z") }