MongoDB基礎教學
MongoDB是一個資料庫,負責存儲和檢索資訊的應用程序的一部分。
MongoDB是一個NoSQL資料庫。在NoSQL這個範疇下,我們將那些不使用SQL語言進行查詢的數據庫都歸為一類。
MongoDB的主要特點:
MongoDB非常友好於JavaScript。它提供了一個JavaScript API,我們可以使用它來創建數據庫和對象集合(稱為文件)。
它是無結構化的,這意味著在存儲數據之前,你不需要預先定義數據的結構。
在MongoDB中,您可以存儲任何對象,而不必擔心組成這個對象的特定字段以及如何存儲它們。你只需要告訴MongoDB存儲該對象。
數據以類似於JSON的格式存儲,但增強了能力,可以存儲不僅僅是基本數據類型的數據。
安裝
接下來,我們要安裝MongoDB。雖然有許多雲服務提供商提供對MongoDB實例的訪問,但為了學習的緣故,我們將自己安裝它。
我使用的是Mac操作系統,所以本教程中的安裝指南是針對該操作系統的。
打開終端並運行以下命令:
brew tap mongodb/brew
brew install mongodb-community
這就是全部。
這些指示並不太長,也不復雜,假設您知道如何使用終端和如何安裝Homebrew。
安裝告訴我們:
要啟動mongodb並在登錄時重新啟動launchd:
brew services start mongodb-community
或者,如果您不需要背景服務,只需運行:
mongod –config /usr/local/etc/mongod.conf
您可以選擇在計算機上啟動MongoDB並將其作為背景服務永遠運行(這是我喜歡的方式),或者只在需要時運行它,通過運行後面的命令。
MongoDB的默認配置是:
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
日誌存儲在“/usr/local/var/log/mongodb/mongo.log”中,數據庫存儲在“/usr/local/var/mongodb”中。
默認情況下,沒有訪問控制,任何人都可以讀取和寫入數據庫。
Mongo Shell
與MongoDB進行實驗並與之交互的最好方式是運行“mongo”程序,它會啟動MongoDB shell。
現在您可以輸入Mongo理解的任何命令。
創建數據庫
當您開始時,Mongo會創建一個名為“test”的數據庫。在shell中運行“db”命令,可以告訴您當前活動數據庫的名稱。
要更改數據庫,只需寫入“use newname”,然後“newname”數據庫將立即被創建並切換到使用該數據庫。
使用“show databases”列出可用數據庫:
如您所見,“something”數據庫未列出,只是因為其中還沒有集合。讓我們創建一個。
集合
在MongoDB中,集合相當於SQL數據庫表。
您可以通過使用db.createCollection()
命令在當前數據庫上創建集合,第一個參數是數據庫名稱,並且您可以作為第二個參數傳遞一個選項對象。
這樣做後,show databases
將列出新數據庫,而show collections
將列出集合。
您還可以通過將其作為db
對象的屬性並調用insert()
將對象添加到集合中來創建新集合:
db.dogs.insert({ name: ‘Roger’ })
列出集合中的對象
要顯示添加到集合中的對象,可以使用find()
方法:
正如您看到的,我們添加的記錄還有一個附加的_id
屬性。這是MongoDB自動為我們生成的。
現在,添加更多的狗:
db.dogs.insert({ name: ‘Buck’ })
db.dogs.insert({ name: ‘Togo’ })
db.dogs.insert({ name: ‘Balto’ })
調用db.dogs.find()
將給我們所有的記錄,而我們可以傳遞參數來過濾並檢索特定記錄,例如db.dogs.find({name: 'Roger'})
:
find()
方法返回一個需要迭代的游標。
如果您知道只會得到一條記錄,還有另一種方法是非常方便的,即findOne()
方法,它的使用方式相同。如果多個記錄匹配查詢,則只返回第一個。
更新記錄
要更新一條記錄,可以使用集合上的update()
方法:
刪除記錄
可以通過在集合上調用remove()
方法並傳遞一個對象來刪除記錄:
要從集合中刪除所有的記錄,傳遞一個空對象:
db.dogs.remove({})