MongoDB DBA常用的NoSQL語句 參考學習
MongoDB DBA常用的NoSQL語句
檢視幫忙命令
>
hlep--server級別
>
db.help()--db級別
>
db.collectionname.
help()--集合級別
檢視所有資料庫
>showdbs
--新建的資料庫並不在資料庫的列集合中,要顯示它,我們需要向新建的資料庫建立集合。
檢視當前資料庫
>db
建立資料庫
>
useDATABASE_NAME
切換到某個資料
>
useDATABASE_NAME
刪除當前資料庫,會把磁碟上的資料庫檔案一併刪除
>
db
.dropDatabase()
修復資料庫
>
db
.repairDatabase()
拷貝資料庫test為test999
>
db.copyDatabase(
'test',
'test999')
檢視所有集合(關係型資料庫叫表)
>
showcollections
>
showtables
檢視各集合的狀態
>
db
.printCollectionStats()
新建集合
db.createCollection(
"集合名",{集合的大小屬性:大小值,集合的增長屬性:增長值,集合的最大容量屬性:最大容量值,,,等等})
>db.createCollection(
"table1")
刪除集合table1
>
db
.table1
.drop()
重新命名集合table1為table101
>
db
.table1
.renameCollection("
table101")
檢視集合table1的所在的資料庫名稱
>
db
.table1
.getDB()
檢視集合table1的狀態
>
db
.table1
.stats()
查詢集合
>db.table1.
find()
--查詢集合的所有資料
>db.table1.findOne()
--查詢集合的第一條資料
>db.table1.count()
--總行數
>db.table1.totalSize()
--集合的總大小
>db.table1.storageSize()
--集合的儲存空間大小
>db.table1.distinct(
"hid")
--只查詢列hid,並列出該列的不重複的值
>db.table1.
find({
"hid":
2})
--hid=2
>db.table1.
find({
"hid":
2,
"hid2":
3})
--hid=2andhid2=3
>db.table1.
find({$
or:[{
"hid":
2},{
"hid2":
3}]})
--hid=2orhid2=3
>db.table1.
find({
"hid":{$gt:
1}})
--hid>1
>db.table1.
find({
"hid":{$gte:
1}})
--hid>=1
>db.table1.
find({
"hid":{$lt:
2}})
--hid<2
>db.table1.
find({
"hid":{$lte:
2}})
--hid<=2
>db.table1.
find({
"hid":/
2/})
--hidlike'%2%'
>db.table1.
find({
"hid":/^
2/})
--hidlike'2%'
>db.table1.
find({},{
"hid":
1,
"go2":
1})
--查詢指定的兩列hid和go2
>db.table1.
find({
"hid":
23},{
"hid":
1,
"go2":
1})
--selecthid,go2fromtable1wherehid=23
>db.table1.
find({},{
"hid":
true,
"go2":
true})
--查詢指定的兩列hid和go2
>db.table1.
find({
"hid":
23},{
"hid":
true,
"go2":
true})
--selecthid,go2fromtable1wherehid=23
>db.table1.
find().
sort({
"hid":
1})
--查詢結果按hid欄位順序排序
>db.table1.
find().
sort({
"hid":
-1})
--查詢結果按hid欄位降序排序
>db.table1.
find().limit(
2)
--查詢前兩條資料
>db.table1.
find().skip(
2)
--查詢第2條以後的所有資料
>db.table1.
find().limit(
3).skip(
2)
--查詢第2條以後的後面3條資料
>db.table1.
find({
"hid":
2}).count()
--查詢hid=2的總行數
插入集合(關係型資料庫叫行,mongodb叫文件,insert後不需要手工提交,其他會話可以看到)
方法1
db.collectionname.
insert({欄位名:
"欄位值"})
>db.table1.
insert({hid:
"1"})
方法2
db.集合名.save({欄位名:
"欄位值"})
>db.table1.save({hid:
2,hname:
"hao2"})
迴圈插入table1集合
for(
vari=
0;i<
30;i++)db.table1.save({hid:
"u_"+i,age:
22+i,sex:i%
2});
更新集合(關係型資料庫叫行,mongodb叫文件)
>db.table1.update({
'hid':2},{
$set:{
'hid':4}},{multi:
true})
把hid欄位的值由2修改為4
update預設修改第一條發現的行,multi:
true集合示修改多行
刪除集合(關係型資料庫叫行,mongodb叫文件)
>db.table1.
remove({
'hid2':
5})
--刪除hid2為5的行
>db.table1.
remove({})
--刪除所有行
建立索引
建立索引後,資料庫目錄下會多出一個index-開頭的檔案
>db.table1.ensureIndex({
"hid"
:
1})
>db.table1.ensureIndex({
"hid"
:
1,
"hid2"
:-
1},{
unique:
true});
1表示升級排序,-
1表示降序排序,
"hid"
:
1,
"hid2"
:-
1表示組合索引,
unique:
true表示唯一性索引
檢視集合table1的索引資訊
>
db
.table1
.getIndexes()
刪除集合table1的索引
>
db
.table1
.dropIndexes()
建立使用者
>
db
.createUser({
user:
"admin",pwd:
"admin",roles:[{role:
"userAdminAnyDatabase",db:
"admin"}]});
>
db
.createUser({
user:
"admin1",pwd:
"admin1",roles:[{role:
"root",db:
"admin"}]});
查詢使用者的三種方法
>
use
admin
>
show
users
>
db
.system
.users
.find()
>
db
.system
.users
.find()
.pretty()
查詢當前使用者
db
.runCommand({
connectionStatus:
1})
建立replicate的語句,建立replicate前,兩個節點啟動的時候必須要加上replSet引數,且replSet引數值必須一樣,例如為replicate1
>
useadmin
>
config={_id:
'replicate1',members:[{_id:0,host:
'172.22.1.157:27017'},{_id:1,host:
'172.22.1.158:27017'}]}
>
rs.initiate(config)
>
rs.status(config)
>
rs.status()
>
showdbs
再到從庫執行如下
>
rs.slaveOk()
>
showdbs
檢視replicate複製狀態
>
db
.printReplicationInfo()
查詢集合table1的shard版本信
>
db
.table1
.getShardVersion()
檢視shard分片信
>
db
.printShardingStatus()
啟動
使用mongod命令,後面接各項引數
mongod-f/mongodb/mongodb.conf
關閉
方法1、
use
admin
db.shutdownServer()
方法2、(如果啟動用了-f,則關閉的時候也要加-f)
mongod--
shutdown
mongod--
shutdown-f/mongodb/mongodb.conf
方法3、(不要加-9,否則下次啟動會無法啟動,需要刪除mongod.lock檔案或使用mongod啟動時必須加上--repair才能啟動成功)
kill<mongodprocess
ID>
mongodb切換日誌
執行時間長了,mongodb的日誌會很大,可以執行切換,生成新的日誌,把舊的日誌刪除,執行這個語句,不影響mongodb服務的執行
>
use
admin
>
db
.runCommand({
logRotate:
1})
執行後,會生成新的名稱不變的日誌檔案,之前的日誌會以時間格式命名儲存下來
如果是replicate環境,不會影響replicate,primary執行這個語句只切換自己的日誌,不影響secondary環境的服務,也不會切換secondary環境的日誌;secondary執行這個語句只切換自己的日誌,不影響primary環境的服務,也不會切換primary環境的日誌
mongodb的日誌檔案,重啟後還在,且會把重啟涉及的關閉啟動資訊追加到這個日誌檔案中
--原文地址:http://blog.itpub.net/30126024/viewspace-2645995/