MongoDB資料庫儲存

來源:互聯網
上載者:User

每個 MongoDB 伺服器都支援多個資料庫。每個資料庫都是相對獨立的,並且出於安全性和為了方便管理,資料庫的資料也隔離儲存區 (Isolated Storage)。

Mongo中繼資料

在MongoDB資料庫中名字空間 <dbname>.system.* 是包含多種系統資訊的特殊集合(Collection),如下:

  • system.namespaces 列出所有名字空間。
  • system.indexes 列出所有索引。
  • 附加的名字空間(namespace)和索引(index)的中繼資料儲存在database.ns中,是混淆後的形式。
  • system.profile 包含資料庫概要(profile)資訊。
  • system.users 列出所有可訪問資料庫的使用者。
  • local.sources 包含複製對端(slave)的伺服器資訊和狀態。
  • 對象的結構資訊儲存在對象內,參見BSON。

對於修改系統集合中的對象有如下限制。在{{system.indexes}}插入資料,可以建立索引。但除此之外該表資訊是不可變的(特殊的drop index命令將自動更新相關資訊)。 {{system.users}}是可修改的。  {{system.profile}}是可刪除的。

注意: $ 是保留字元。請不要在名字空間或欄位的名字中使用。內部的索引相關的集合將在名字中使用 $ 字元。而這些集合儲存為B-tree集的形式(無法用直接查詢)。

資料庫指令
介紹

Mongo資料庫有資料庫指令(database command)概念。使用這些命令可以讓資料庫執行某中操作或是返回有關資料庫目前狀態的某些資訊。

  • 介紹
  • 特權指令
  • 獲得指令協助資訊
  • 更多指令文檔
  • [資料庫指令列表]

一條指令將被作為針對 $cmd 集合的一種特殊的查詢語句發送到資料庫。資料庫執行後,將返回一個單文檔對象作為命令的返回結果,可以用 findOne() 獲得。

基本的命令格式為:

db.$cmd.findOne( { <commandname>: <value> [, options] } ); 

在命令列環境下,可以執行:

db.runCommand( { <commandname>: <value> [, options] } ); 

例如,檢查當前資料庫profile level的設定,可以執行:

> db.runCommand({profile:-1}); { "was" : 0.0 , "ok" : 1.0 } 

多數資料庫驅動提供了對資料庫指令的封裝方法,以方便使用。例如mongo shell 提供

> db.getProfilingLevel() 0.0 

該方法的實現如下:

> print( db.getProfilingLevel ) function () { var res = this._dbCommand({profile:-1}); return res ? res.was : null; } > print( db._dbCommand ) function (cmdObj) { return this.$cmd.findOne(cmdObj); } 

多數指令都有類似的簡便用法 - 參見各資料庫驅動的相關文檔。

特權指令

某些特殊的操作只有管理員才能執行。這些特殊的操作將在{{admin}}資料庫中執行。

> use admin; > db.runCommand("shutdown"); // shut down the database 

如果當前資料庫不是'admin', 你可以直接使用_adminCommand方法去操作:

> db._adminCommand("shutdown"); 

(對於這個操作,還有簡便用法db.shutdownServer。)

獲得指令協助資訊

使用commandHelp命令去獲得某個指令的相關資訊:

> db.commandHelp("datasize") help for: datasize example: { datasize:"blog.posts", keyPattern:{x:1}, min:{x:10}, max:{x:55} } NOTE: This command may take awhile to run 

(某些指令還沒有完整的協助資訊.)

一個資料庫可以包括一個或多個集,每個集中可以存放文檔對象,同時可以為操作這些內容設定一個可選的安全認證。

  • Mongo中繼資料
  • 資料庫指令

    • 複製資料庫
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.