1. 程式人生 > >mongodb概念--文件、集合、資料庫、shell

mongodb概念--文件、集合、資料庫、shell

Mongodb不是關係型資料庫,對於使用關係型資料庫較多的我們,mongodb的一些基本概念需要好好的理解。在理解這些概念的時候,我是以與關係型資料庫等對比的方式來理解的,這樣有助對概念的更好理解。

1.文件
  文件時mongodb中資料的基本單元,類似關係型資料庫中的行。
  >>關係型資料庫:
    行:是標識一條存在資料庫中的記錄,行有唯一標識的欄位,比如oracle就有隱藏存在的rowid。行有列,標識對應欄位的名稱,欄位值為列所表示的值。
  >>Mongodb
    文件:標識集合中的一條記錄,即集合中的一個物件,形象的對比:陣列中的一個元素,List中的一個元素等(個人理解)。文件有唯一的標識“_id”,資料庫可自動生成,可類比oracle的rowid。
          文件以key/value的方式,如下文件:
          {"name":"jack","age":20}
          可類比資料表的列,以及列對應的值。
         
          以下列出鍵值為不同型別的不同文件:
          文件1:{"name":"wangjun","age":20,"email":["

wang1","wang2","wang3"],"schools":{"xiao":"zhongfengxiaoxue","zhong":"zhongfengzhongxue","da":"zhongfengdaxue"}}
          文件2:{"Name":"wangjun","Age":20,"email":["wang1","wang2","wang3"],"schools":{"xiao":"zhongfengxiaoxue","zhong":"zhongfengzhongxue","da":"zhongfengdaxue"}}
          文件3:{"name":"wangjun","email":["
wang1","wang2","wang3"],"age":20,"schools":{"xiao":"zhongfengxiaoxue","zhong":"zhongfengzhongxue","da":"zhongfengdaxue
"}}
         
          三個不同文件說明以下問題:
          1> 文件的鍵值對是有序的,順序的不同文件亦不同
          2> 文件的值可以使字串、整數、陣列以及文件等型別
          3> 文件的鍵是用雙引號標識的字串(常見的);除個別例外外,可用任務UTF-8字元。要求如下:
             >鍵不能含有\0(空字元),這個字元用來標識鍵的結尾
             >.和$被保留,存在特別含義,最好不要用來命名鍵名
             >"_"開頭的鍵是保留的,建議不要使用。
         
          4> 文件區分大小寫以及值型別,比如:
             {"name":"wangjun","age":20}
             {"name":"wangjun","age":"20"}
            
             {"Name":"wangjun","Age":20}
             {"name":"wangjun","age":"20"}
            
             以上這些通過比較著來看,我覺得就都很好理解。
            
2.集合
  集合在mongodb中是一組文件,類似關係型資料庫中的資料表。
  >>關係型資料庫:
    表:是儲存多個數據的,表中存在多行。表,即模式.表名。表中的資料行在列數、列的型別都是一樣。
    select * from [模式].表名
  >>Mongodb
    mongodb資料庫不是關係型資料庫,沒有模式的概念。集合中的文件可以使不同形式的。比如:
    {"name":"jack","age":19}
    {"name":"wangjun","age":22,"sex":"1"}
   
    可以存在同一個集合當中。
   
    集合是由唯一的命名來標識,滿足以下條件的任意UTF-8字串:
    >集合名不能使空字串""
    >集合名不能含有\0字元(空字元),這個字元標識集合名的結尾
    >集合名不能以"system."開頭,該為系統集合保留的字首
    >使用者建立的集合名字不能含有保留字元$
   
    比如:集合classes   classes的子集合students  查詢方式:
    db.classes.find()
    db.classes.students.find()
   
    跟關係型資料庫的資料表、組數、列表對比看,我覺得mongodb的集合更像列表List。
   
3.資料庫
  mongodb中多個文件構成集合,多個集合構成資料庫。
  >>關係型資料庫
    在安裝資料庫的時候資料庫例項建立,同時存在系統預設的管理員使用者。之後可以建立多個使用者並進行賦權,建立的表存在於不同的使用者之下,不同的使用者儲存著不同的資料。
  >>Mongodb
    mongodb以文件的形式儲存在集合中,可以同一資料庫儲存不同的資料或者集合,即DB2、oracle、teradata等都可以儲存在同一個資料庫中。最近做的專案就可以將這三者資料庫的資料都儲存到同一資料庫中。
   
    mongodb伺服器可以存在多應用或者使用者的資料,可以相互獨立。資料的命名規則:
    >不能使空字串("")
    >不得含有''(空格)、.、$、/、|和\0(空字元)
    >應全部小寫
    >最多64位元組
   
    保留資料庫名:admin、local、config
   
4.Mongodb Shell
  Mongodb Shell即自帶的javascript shell,javascript直譯器.執行mongo啟動shell後自動連線Mongodb伺服器,執行javascript程式。可以再shell窗口裡面進行javascript函式的一些操作。
  如:
  >1+1
  2
  >val = 10
  10
  >val/2
  5
  >
 
  shell也是Mongodb客戶端,shell連線Mongodb伺服器的test資料庫,並將該資料庫的連線賦值給全域性變數db,即shell訪問mongodb資料庫的主要入口點。
  shell操作:
  1.建立:db.a.insert({"name":"jack","age":19})
          db.a.insert({"name":"luce","age":20})
         
  2.查詢:db.a.find()                  --全查
          db.a.findOne()               --只取多個的第一個
          db.a.find({"name":"jack"})   --根據條件查詢
         
  3.更新:db.a.update({"name":"jack"},{"age":30})
 
  4.刪除:db.a.remove()                --刪除所有文件,集合保留
          db.a.remove({"name":"jack"}) --刪除複合條件的文件
          db.a.drop()                  --刪除集合,於此同時所有文件也刪除了
  
   從上面可以看出,shell中使用的為javascript指令碼,具體的使用類比jquery中方法的呼叫方式,面向物件???
  

以上是我參考一些資料和實際的工作和學習的理解,有什麼問題請指出,謝謝!

相關推薦

mongodb概念--集合資料庫shell

Mongodb不是關係型資料庫,對於使用關係型資料庫較多的我們,mongodb的一些基本概念需要好好的理解。在理解這些概念的時候,我是以與關係型資料庫等對比的方式來理解的,這樣有助對概念的更好理解。 1.文件   文件時mongodb中資料的基本單元,類似關係型資料庫中的行

以太坊開發DApp實戰教程——用區塊鏈星際系統(IPFS)Node.js和MongoDB來構建電商平臺

IPFS 區塊鏈電商 區塊鏈開發 以太坊開發 以太坊dapp 以太坊教程 智能合約 以太坊 星際文件系統 區塊鏈 第一節 簡介 歡迎和我們一起來用以太坊開發構建一個去中心化電商DApp!我們將用區塊鏈、星際文件系統(IPFS)、Node.js和Mong

Spring Data MongoDB 五:進階查詢(分頁Morphia)(二)

一.簡介      SpringData  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate對MongoDB的find

load事件:imgiframe

嵌套if 研究 else app function win ner jpg n) iframe的 load 事件 在所有為IFRAME動態添加onload監聽事件的方法中,只有 使用事件監聽方式為 IFRAME 的 onload 事件綁定處理函數,IE6、7、8才有效。所以

老男孩教育每日一題-第84天-兩個,把第一個中的第23行內容添加到第二個的第3行後面

每日一題兩個文件如下:[[email protected]/* */ ~]# cat 1.txt 111 222 333 [[email protected]/* */ ~]# cat 2.txt AAA bbb ccc ddd要求修改後的文件[[email protect

後綴名   linux 和windows 互傳 後綴名

文件後綴名 、linux 和windows 互傳文件 文件後綴名文件後綴名 、linux 和windows 互傳文件文件後綴名在linux 下面 命令 文件 都區分大小寫大寫的 LS 就識別不了 ls 這個命令LANG=en 就顯示成英文linux 和windows 互傳文件首相只能使用遠程工具xs

系統常用命令dfdufsckdumpe2fs

debug page 操作 人性 rep freeze eve 註釋 dumpe2fs df 查看文件系統 [[email protected]/* */ ~]# df 文件系統 1K-塊 已用 可用 已用% 掛載點 /dev/

轉發:centos徹底刪除命令(centos 新建刪除移動復制等命令)

目錄 str detail 文件夾 目的 刪除文件夾 -i 命名 新建文件夾 http://blog.csdn.net/lpdx111/article/details/16877725 centos徹底刪除文件夾、文件命令(centos 新建、刪除、移動、復制等命令:

(轉)關於Tomcat的點點滴滴(體系架構處理http請求的過程安裝和配置目錄結構設置壓縮和對中文名的支持以及Catalina這個名字的由來……等)

https 設置 重啟 specific 調用 持久化數據 所在 original apps 轉自:http://itfish.net/article/41668.html 總結Tomcat的體系架構、處理http請求的過程、安裝和配置、目錄結構、設置壓縮和對中文文件名

日誌服務器(vsftpNFS)

日誌、文件服務器(vsftp、nfs、samba下面介紹的是)日誌、文件服務器(vsftp、NFS、samba一、日誌1、日誌基礎(1)、日誌 日誌 -----------記錄具有一定意義的歷史事件。 事件 -----------時間、事件本身的內容、事件的關鍵程度(級別) 最開始的日誌系統為: syslog

系統目錄結構 類型和lsalias命令

linux5.1 系統目錄結構/bin 該目錄為軟鏈接,用戶二進制文件,包含二進制可執行文件,同/sbin、/usr/bin/、/usr/sbin/、/sbin一樣都是存放的常用命令/boot linux的引導加載程序文件,啟動相關的文件,grub相關的文件/dev 系統所有的設備及驅動文件/etc 配置文件

介紹岑centos7的 系統目錄結構類型和lsalias命令

linux系統目錄結構命令tree 以樹形的結構顯示目錄的方法需要安裝 安裝命令:yum install -y treetree --hep #用來顯示常用的選項特點:不太直觀man tree #man用來顯示一個文件的幫組文檔tree -L 2 /指定最大二層目錄的命令最常用的目錄:bin #普通用戶用的命

Centos 7 目錄權限chmod更改所有者和所屬組chownumask隱藏權限lsattr/chattr

linux 權限 文件和目錄權限chmod#代表文件權限#圖中第一段rw- 所有者對應的權限,是否可寫w,是否可讀r,是否可執行x,如果都不可以用rw-#圖中第二段r 表示所屬組的用戶權限, 這個用戶組對這個文件的權限是可讀不可寫不可執行#圖中第三段r 可讀的不可寫不可執行#權限位是從第一列

Windows 系統 Unicode 名操作(新建重命名枚舉復制)全攻略

for overflow date col left 文件的 函數 參數 splay 常見的那些文件操作函數都不支持,於是為了達到目的,需要各種方法配合,應該是不如其他語言方便。我只是想看看Perl到底是否適合做這件事,於是折騰了一回。文件的建立: 模塊:Win32

【API】操作編程-CreateFileWriteFileSetFilePointer

移動 turn 操作 .cpp 名稱 create 輸出 拷貝 null 1、說明  很多黑客工具的實現是通過對文件進行讀寫操作的,而文件讀寫操作實質也是對API函數的調用。 2、相關函數 CreateFile :  創建或打開文件或I/O設備。最常用的I/O設備如下:文件

傳輸協議(FTPTFTP)

FTP TFTP FTP<1>FTP協議是互聯網上廣泛使用的文件傳輸協議。<2>客戶端/服務器模式基於TCP(Transmission Control Protocol 傳輸控制協議,面向連接的、可靠的、基於字節流的傳輸層通信協議)<3>FTP采用雙TCP連接方式

第五課 系統目錄結構類型及lsalias命令的使用

20180323一、系統的目錄結構;1、tree命令用來顯示文件的目錄結構(用命令:yum install -y tree 安裝此命令),-L 指定查看的層次:tree -L 3 目錄,我們可以用man 命令來查看tree的詳細用法。 2、文件目錄結構 /bin/ /sbin/ /usr/bin/ /us

Java代碼實現添加數字簽名驗證數字簽名

exist h+ exception rda charset stdout sha256 程序 trac Linux下實現加簽、驗簽 1.使用OpenSSL 生成公鑰和密鑰; #用 OpenSSL, Linux 上自帶,常用命令如下: #生成 RSA 私鑰(傳統格式的)

jsp 無法加載 cssjs 的問題

完全匹配 resource jsp sources 匹配 訪問 ppi pat blog 今天遇到一個問題是,在 jsp 裏面引入 css、js,請求的狀態是 200,但 css、js 的內容卻是空的。 這是因為 servlet 有個 url-pattern,將 css

用戶相關命令與權限(普通特殊隱藏ACL)

lsattr mas 否則 sudo命令 目錄文件 文件類型 附加 特殊權限 AD 1.用戶相關命令 useradd - 創建用戶,默認創建與用戶名同名的用戶組 groupadd - 創建用戶組 usermod - 修改用戶的屬性,如UID、所屬組、附加組等 passwd