国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Mongodb學習記錄:入門(一)

whinc / 472人閱讀

摘要:通過在文檔中嵌入文檔和數(shù)組面向文檔的方法能夠僅使用一條記錄來表現(xiàn)復雜的層次關(guān)系這與使用現(xiàn)代面向?qū)ο笳Z言的開發(fā)者對數(shù)據(jù)的看法一致。在模式下會限制輸出信息數(shù)據(jù)庫命令輸出,副本集活動,連接接受事件,連接關(guān)閉事件。指定一個文件或。

預熱看我之前的文章Node學習記錄: mongodb

這個系列旨在系統(tǒng)的學習Mongodb

使用windows的同學可以看這篇文章MongoDB開發(fā)學習

學習目標

MongoDB官網(wǎng):https://www.mongodb.com/
MongoDB中文社區(qū):http://www.mongoing.com/
mongodb github:https://github.com/mongodb
關(guān)系型數(shù)據(jù)庫 與 非關(guān)系型數(shù)據(jù)庫
MongoDB是一個面向文檔(document-oriented)的數(shù)據(jù)庫,而不是關(guān)系型數(shù)據(jù)庫。不采用關(guān)
系模型主要是為了獲得更好的擴展性。當然, 還有其他一些好處。

與關(guān)系型數(shù)據(jù)庫相比,面向文檔的數(shù)據(jù)庫不再有(row)的概念,取而代之的是更為靈活的文檔(document)模型。通過在文檔中嵌入文檔和數(shù)組,面向文檔的方法能夠僅使用一條記錄來表現(xiàn)復雜的層次關(guān)系,這與使用現(xiàn)代面向?qū)ο笳Z言的開發(fā)者對數(shù)據(jù)的看法一致。

另外,不再有預定義模式(predefined schema):文檔的鍵(key)和值(value)不再是固定的類型和大小。由于沒有固定的模式,根據(jù)需要添加或刪除字段變得更容易了。通常,由于開發(fā) 者能夠進行快速迭代,所以開發(fā)進程得得以加快。而且,實驗更容易進行。開發(fā)者能嘗試大量的數(shù)據(jù)模型,從中選擇一個最好的。
MongoDB并不具備一些在關(guān)系型數(shù)據(jù)庫中很普遍的功能,如連接(join)和復雜的多行事務(wù)(multirow transaction)。省略這些功能是出于架構(gòu)上的考慮(為了得到更好的擴展性),因為在分布式系統(tǒng)中這兩個功能難以高效地實現(xiàn)。
基礎(chǔ)概念

文檔是MongoDB中數(shù)據(jù)的基本單元,非常類似于關(guān)系型數(shù)據(jù)庫管理系統(tǒng)中的,但更具表現(xiàn)力

集合(collection)可以看作是一個擁有動態(tài)模式(dynamic schema)的表

MongoDB的一個實例可以擁有多個互相獨立的數(shù)據(jù)庫(database),每個數(shù)據(jù)庫都擁有自己的集合

每個文檔都有一個特殊的鍵"_id",這個鍵在文檔所屬的集合中唯一的。

MongoDB自帶一個簡單但功能強大的JavaScript shell可用于管理MongDB的實例 或 數(shù)據(jù)操作

文檔

文檔就是鍵值對的一個有序集

{"x" : 1, "y":2}{"y": 2, "x": 1}是不同的

通常,字段順序并不重要,無須讓數(shù)據(jù)庫模式依賴特定的字段順序(MongoDB會對字段重新排序)。

在某些特殊情況下,字段順序變得非常重要

一些編程語言對文檔的默認表示根本就不包含順序問題(如:Python中的字典、Perl和Ruby
 1.8中的散列)。通常,這些語言的驅(qū)動具有某些特殊的機制,可以在必要時指定文檔的順序。

MongoDB不但區(qū)分類型,而且區(qū)分大小寫

下面的兩個文檔是不同的

{"foo" : 3}
{"foo" : "3"}

下面兩個文檔也是不同的

{"foo" : 3}
{"Foo" : 3}

MongoDB的文檔不能有重復的鍵

下面的文檔是非法的:

{"greeting" : "Hello, world!", "greeting" : "Hello, MongoDB!"}
集合

集合就是一組文檔。

如果將MongoDB中的一個文檔比喻為關(guān)系型數(shù)據(jù)庫中的一行,那么一個集合就相當于一張表。

動態(tài)模式

一個集合里面的文檔可以是各式各樣的,這意味著,下面兩個文檔可以存儲在同一個集合里面:

{"greeting" : "Hello, world!"}
{"foo" : 5}

————> 這里引發(fā)一個問題:

因為集合里面可以放置任何文檔,還有必要使用多個集合嗎?(既然沒有必要區(qū)分不同類型文檔的模式,為什么還要使用多個集合呢)

如果把各種各樣的文檔不加區(qū)分地放在同一個集合里,無論對開發(fā)者還是對管理員來

說都將是噩夢。開發(fā)者要么確保每次查詢只返回特定類型的文檔,要么讓執(zhí)行查詢的應(yīng)用程序來處理所有不同類型的文檔。如果查詢博客文章時還要剔除含有作者數(shù)據(jù)的 文檔,這會帶來很大困擾。

在一個集合里查詢特定類型的文檔在速度上也很不劃算,分開查詢多個集合要快得多。例如,假設(shè)集合里面一個名為"type"的字段用于指明文檔是skim、whole還是 chunky monkey。那么,如果從一個集合中查詢這三種類型的文檔,速度會很慢。但如果將這三種不同類型的文檔拆分為三個不同的集合,每次只需要查詢相應(yīng)的集合,速 度快得多。

把同種類型的文檔放在一個集合里,數(shù)據(jù)會更加集中。從一個只包含博客文章的集合里查詢幾篇文章,或者從同時含文章數(shù)據(jù)和作者數(shù)據(jù)的集合里查出幾篇文章,相比之下,前者需要的磁盤尋道操作更少。創(chuàng)建索引時,需要使用文檔的附加結(jié)構(gòu)(特別是創(chuàng)建唯一索引時)。索引是按照集合來定義的。在一個集合中只放入一種類型的文檔,可以更有效地對集合進行索引。

上面這些重要原因促使我們創(chuàng)建一個模式,把相關(guān)類型的文檔組織在一起,盡管MongoDB對此并沒有強制要求。

數(shù)據(jù)庫
在MongoDB中,多個文檔組成集合,而多個集合可以組成數(shù)據(jù)庫。一個MongoDB實例可以承載多個數(shù)據(jù)庫,每個數(shù)據(jù)庫擁有0個或者多個集合。每個數(shù)據(jù)庫都有獨立的權(quán)限,即便是在磁盤上,不同的數(shù)據(jù)庫也放置在不同的文件中。按照經(jīng)驗,我們將有關(guān)一個應(yīng)用程序的所有數(shù)據(jù)都存儲在同一個數(shù)據(jù)庫中。要想在同一個MongoDB服務(wù)器上存放多個應(yīng)用程序或者 用戶的數(shù)據(jù),就需要使用不同的數(shù)據(jù)庫。
安裝

Linux平臺安裝MongoDB

或者

在 Ubuntu 16.04 上安裝 MongoDB 可參考 MongoDB Docs:

//非二進制包安裝方式
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

這樣安裝默認端口是27017

先啟動mongod

sudo service mongod start


在 CentOS 7 上安裝 MongoDB 可參考 MongoDB Docs:

$ sudo vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
$ sudo yum install -y mongodb-org

mongod : mongodb數(shù)據(jù)庫的執(zhí)行程序(數(shù)據(jù)庫部署使用這個程序)

mongo :用來連接mongodb數(shù)據(jù)服務(wù)器的客戶端,對數(shù)據(jù)的所有操作,需要先使用mongo客戶端連接到mongodb服務(wù)器之后才能進行

mongoimport mongoexport 用來做mongodb的導入導出

mongodump mongorestore用來導入導出二進制數(shù)據(jù),不能被直接讀取,一般做數(shù)據(jù)的備份與恢復

mongooplog 用來做操作日志的回放,oplog是mongodb復制集中用來記錄操作記錄的數(shù)據(jù)集合

mongostat 查看各種狀態(tài)

搭建簡單的mongodb服務(wù)器

搭建MongoDB服務(wù)器之后,需要使用客戶端連接,才能進行操作。

連接方法:

使用編譯時候生成的客戶端連接

使用各種驅(qū)動連接

關(guān)閉服務(wù)

kill進程

在kill進程時候需要注意需要使用 kill-15 或者kill不加任何參數(shù),不要使用kill-9
Linux kill -9 和 kill -15 的區(qū)別

db.shutdownServer()

use admin
db.shutdownServer()



圖形操作工具

https://robomongo.org/
https://blog.csdn.net/jian1ji...

遠程連接配置

https://www.cnblogs.com/jinxi...

mongodb的mongo.conf文件 啟動參數(shù)

啟動MongoDB有2種方式:

一是直接指定配置參數(shù),

二是指定配置文件。

mongodb啟動腳本為mongod,我們可以這樣啟動:

./mongod –port=27017 –host=127.0.0.1 –dbpath=db –logpath=27017.log –fork=true

也可以在bin目錄創(chuàng)建如下mongo.conf文件

#bind_ip_all = true                 # 任何機器可以連接
bing_ip = 127.0.0.1,192.168.0.3     # 本機和192.168.0.3可以訪問
port = 27017                        # 實例運行在27017端口(默認)
dbpath = /usr/local/mongodb/db      # 數(shù)據(jù)文件夾存放地址(db要預先創(chuàng)建)
logpath = /usr/local/mongodb/logs/27017.log  # 日志文件地址
logappend = false                   # 啟動時 添加還是重寫日志文件
fork = true                         # 是否后臺運行
auth = true                         # 開啟校驗用戶

啟動的時候在bin目錄執(zhí)行:

./mongod -f mongo.conf 
# 或者
./mongod –config=mongo.conf

更多的配置信息點這里: https://my.oschina.net/pwd/bl...
這種方式啟動方便的地方就是我們可以在依賴mongodb的項目中定義好mongodb.conf(YAML-based格式的配置文件) `

項目代碼在這里,歡迎folk和star:https://github.com/AlexZ33/eg...

systemLog:
  verbosity: 0   #日志文件輸出的級別,越大級別越低。
  quiet: true   #boolean 在quiet模式下會限制輸出信息:數(shù)據(jù)庫命令輸出,副本集活動,連接接受事件,連接關(guān)閉事件。
  syslogFacility: user #string,默認為user 指定syslog日志信息的設(shè)備級別。需要指定--syslog來使用這個選項。
  destination: file # string指定一個文件或syslog。如果指定為文件,必須同時指定systemLog.path
  path: /dev/null  # string發(fā)送所有的診斷信息日志,默認重啟后會覆蓋。
  quiet: true
  logAppend: false # boolean是否啟用追加日志。
  timeStampFormat # string,默認為iso8601-local 日志信息中的時間戳格式

storage:
  dbPath: /data/db
  directoryPerDB: true
  journal:
    enabled: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      directoryForIndexes: true

processManagement:
  fork: true # boolean,默認為false是守護進程在后臺運行。

net:
  bindIp: 127.0.0.1
  port: 27017
  maxIncomingConnections: 1000000

我們可以在npm scripts中加入:

"mongod": "sudo mongod --config config/mongodb.conf"
參考

安裝與遠程連接
慕課網(wǎng) mongoDB入門篇
MongoDB 實戰(zhàn)
MongoDB 權(quán)威指南
mongod conf

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19080.html

相關(guān)文章

  • MongoDB最簡單的入門教程之五-通過Restful API訪問MongoDB

    摘要:通過前面四篇的學習,我們已經(jīng)在本地安裝了一個數(shù)據(jù)庫,并且通過一個簡單的應(yīng)用的單元測試,插入了幾條記錄到中,并通過查看到了插入的數(shù)據(jù)。讀操作最終將會使用我們在最簡單的入門教程之三使用代碼往里插入數(shù)據(jù)里介紹的方法,即通過注入的實例完成對的操作。 通過前面四篇的學習,我們已經(jīng)在本地安裝了一個MongoDB數(shù)據(jù)庫,并且通過一個簡單的Spring boot應(yīng)用的單元測試,插入了幾條記錄到Mong...

    xeblog 評論0 收藏0
  • MongoDB最簡單的入門教程之五-通過Restful API訪問MongoDB

    摘要:通過前面四篇的學習,我們已經(jīng)在本地安裝了一個數(shù)據(jù)庫,并且通過一個簡單的應(yīng)用的單元測試,插入了幾條記錄到中,并通過查看到了插入的數(shù)據(jù)。讀操作最終將會使用我們在最簡單的入門教程之三使用代碼往里插入數(shù)據(jù)里介紹的方法,即通過注入的實例完成對的操作。 通過前面四篇的學習,我們已經(jīng)在本地安裝了一個MongoDB數(shù)據(jù)庫,并且通過一個簡單的Spring boot應(yīng)用的單元測試,插入了幾條記錄到Mong...

    xiaolinbang 評論0 收藏0
  • MongoDB學習記錄入門(二)| 增刪改查

    摘要:上一篇提到為我們提供的客戶端管理工具是,可以用它操作數(shù)據(jù)庫,進行增刪改查。對比刪除集合中的所有文檔保留集合刪除集合數(shù)據(jù)更新方法用于更新已存在的文檔參數(shù)說明的查詢條件,類似查詢內(nèi)后面的。可選,拋出異常的級別。 上一篇提到:mongodb 為我們提供的客戶端管理工具是mongo,可以用它操作數(shù)據(jù)庫,進行增刪改查(CRUD)。現(xiàn)在我們?nèi)缟弦徽履菢樱瑔觤ongod,再啟動mongo 不記得的...

    sutaking 評論0 收藏0

發(fā)表評論

0條評論

whinc

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<