驗證命令
使用這個命令檢查一個集合是否合法(沒有錯誤)並且擷取很多統計資訊。
該命令掃描整個集合和它的索引,在大的資料集上會很慢。
從mongo shell操作:
> db.foo.validate()
{"ns" : "test.foo" , "result" : "
validate
details: 08D03C9C ofs:963c9c
firstExtent:0:156800 ns:test.foo
lastExtent:0:156800 ns:test.foo
# extents:1
datasize?:144 nrecords?:3 lastExtentSize:2816
padding:1
first extent:
loc:0:156800 xnext:null xprev:null
ns:test.foo
size:2816 firstRecord:0:1568b0 lastRecord:0:156930
3 objects found, nobj:3
192 bytes data w/headers
144 bytes data wout/headers
deletedList: 0000000100000000000
deleted: n: 1 size: 2448
nIndexes:1
test.foo.$x_1 keys:3
" , "ok" : 1 , "valid" : true , "lastExtentSize" : 2816}
從一個驅動你可以調用類似於這樣的驅動函數:
> db.$cmd.findOne({validate:"foo" } );
validate攜帶一個可選的掃描資料參數,跳過基本集合的掃描(但是依舊會掃描索引)。
> db.$cmd.findOne({validate:"foo", scandata:true});
這是一個阻塞型操作(類似於repaireDatabase)。
Windows服務
在windows平台,對mongodb.exe安裝並作為服務來運行有著內部支援。
服務相關命令
服務相關的命令有:
mongod --install
mongod --service
mongod --remove
mongod --reinstall
你可以傳遞下面的選項給--install 和 --reinstall
--serviceName {arg}
--serviceUser {arg}
--servicePassword {arg}
--install 和--remove選項是分別將mongo守護作為windows服務安裝和移除的。--service選項啟動這個服務。--reinstall嘗試移除該服務,然後再安裝它。如果該伺服器並沒有安裝,--reinstall還是可以正常工作。
如果該服務正在啟動並執行話, --remove和--reinstall都會停止這個服務。
使用--serviceName改變服務的名稱。要使mongo相對於本地系統賬戶作為本地或者域使用者運行,使用--serviceUser和--servicePassword.
無論你在mongod的命令列--install旁邊傳遞了什麼其他參數,這些參數都將配置給mongod.exe運行時使用。使用下面的命令列作為例子(這些參數並不是讓mongod作為服務啟動並執行必須參數):
mongod --logpath d:\mongo\logs --logappend --dbpath d:\mongo\data --directoryperdb --install
執行下面的例子可以觸發一個名為Mongo的服務啟動:
mongod --logpath d:\mongo\logs --logappend --dbpath d:\mongo\data --directoryperdb
在windows7安裝
如果在windows7安裝,你需要確保你是作為管理員來啟動並執行。要確認這一點,請開啟開始菜單,在搜尋方塊中輸入"cmd.exe",當執行頁面出現後,在上面右擊並選擇“作為管理員運行”。
到了這一步,你可以按照上面描述的使用--install將Mongodb作為服務安裝。
mongos作為windows服務運行
此時(至少在1.8.x),mongos並不支援直接安裝成服務。但是,使用windows資源套件,你可以配置一個windows主機將mongos作為系統啟動項來啟動。(使用mongodb 1.8.1在windows測試通過)
- 假定你的mongos設定檔在c:\MongoDB\mongos.conf,並且你已經測試過它可以工作。
- 使用管理員身份啟動cmd.exe
- 安裝srvany.exe為一個服務,類似這樣:C:\Program Files\Windows Resource Kits\Tools>"C:\Program Files\Windows Resource
Kits\Tools\instsrv.exe" mongos "C:\Program Files\Windows Resource Kits\Tools\srvany.exe",輸出類似於:The service was successfuly added\!
Make sure that you go into the Control Panel and use
the Services applet to change the Account Name and
Password that this newly installed service will use
for its Security Context.
- 啟動regedit.exe
- 找到子鍵
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mongos
- 右擊mongos,選擇建立>關鍵字。為關鍵字參數命名。
- 選擇參數關鍵字。
- 在右側視窗右擊,選擇建立>字串值。為新應用命名。
- 修改應用的值為mongos.exe的全路徑(例如:c:\mongodb\bin\mongs.exe)。
- 在右側視窗再次右擊。選擇建立>字串值,為新應用參數命名。
- 修改應用參數為mongos的參數(例如:--config c:\mongodb\mongos.conf)。
- 使用"NET START mongos"檢查該服務是否可以啟動。
mongo中繼資料
在mongodb中的<資料庫名稱>.system.*命名空間是特殊的並且包含了資料庫系統資訊。系統集合包含:
- system.namespaces列出所有命名空間
- system.indexes列出所有索引
- 附加的命名空間/索引中繼資料存放區在database.ns檔案中,並且是不透明的。
- system.profile儲存資料庫評測資訊。
- system.users列出可以訪問該資料庫的使用者
- local.sources儲存複製組從節點配置資料和狀態。
- 儲存的對象的結構細心。
這裡有一些處理系統集合中的對象的限制。對system.indexes進行插入會添加一個索引,但是除此之外這個表是不可更改的(特殊的丟棄索引命令可以幫你對他做更新)。system.users是可以更改的。system.profile是可以丟棄的。
注意:$是一個保留的字元。不要在命名空間或者內部欄位名稱中使用它。表示索引的內部集合在他們的名稱中使用$. 這些集合儲存b-tree塊資料並且沒有使用BSON格式(此時直接查詢是不可以的)。