/

MongoDB基礎教學

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({})