MongoDB 是什麼 MongoDB 是一種非關係型資料庫(NoSQL)。 MongoDB中的術語解釋 文檔(document):形如 { name: "sue", 區分大小寫 field唯一 , 不可重覆 文檔可嵌套 鍵值對是有序的 集合:集合就是一組文檔 SQL 與 MongoDB 術語比較 ...
MongoDB 是什麼
MongoDB 是一種非關係型資料庫(NoSQL)。
MongoDB中的術語解釋
文檔(document):形如
{ name: "sue", <---- field: value age: 26, <---- field: value status: "A" <---- field: value groups: [ "news", "sports" ] <---- field: value }
的一條記錄,就叫文檔。文檔由field and value pairs
組成,與JSON對象相似。- 區分大小寫
- field唯一 , 不可重覆
- 文檔可嵌套
- 鍵值對是有序的
集合:集合就是一組文檔
SQL 與 MongoDB 術語比較
SQL術語 | MongoDB術語 | 解釋說明 |
---|---|---|
database | database | 資料庫 |
table | collection | 表、集合 |
row | document | 記錄、文檔 |
column | field | 欄位、域 |
index | index | 索引 |
table joins | 表連接、MongoDB不支持 | |
primary key | primary key | 主鍵、MongoDB自動將_id欄位設置為主鍵 |
安裝 MongoDB
具體因版本不同,不宜贅述,最好參考官方文檔。
連接 MongoDB 資料庫
連接資料庫前你需要確認:
- 你已經成功安裝MongoDB,並啟動了MongoDB服務。
- 你將MongoDB安裝目錄下的
bin
文件夾路徑添加到了環境變數中。 - 在 cmd 中輸入 mongo ,回車。然後就可以看到MongoDB shell 形式的客戶端。
MongoDB shell 中使用命令
MongoDB shell 支持JS語法,可直接書寫JS語句。
show dbs 顯示所有資料庫
use dbname MongoDB 不需要單獨的語句創建資料庫,
直接使用就行。若資料庫存在,則使用;否則創建之後使用。db 顯示當前所在資料庫
> stu = {
... name: 'jhon',
... age:21}
{ "name" : "jhon", "age" : 21 }
- 通過上述語句可以創建一個stu對象
> db.students.insert(stu)
WriteResult({ "nInserted" : 1 })
> db.students.insert({name: 'Amy'})
- 這樣將對象添加進資料庫
查詢
> db.students.find()
{ "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"), "name" : "jhon", "age" : 21 }
> db.students.findOne()
{
"_id" : ObjectId("5ba9dfb9e840eb1e9186871e"),
"name" : "jhon",
"age" : 21
}
"_id"是MongoDB預設增加的,用來唯一標識一個文檔
修改
- 直接修改,會替換原數據,無法進行單個key-value的更改
> db.students.update({name: 'jhon'},{name: 'jhonc'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.findOne()
{ "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"), "name" : "jhonc" }
可以看到 age 屬性也沒有了。
- 通過對象修改
> stu_obj = db.students.findOne({name: "Amy2"})
{
"_id" : ObjectId("5ba9e3eee840eb1e91868720"),
"name" : "Amy2",
"age" : 16,
"sex" : "male"
}
> stu_obj.name = "Jhon2"
Jhon2
> db.students.update({name: "Amy2"}, stu_obj)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> stu_obj = db.students.findOne({name: "Amy2"})
null
> stu_obj = db.students.findOne({name: "Jhon2"})
{
"_id" : ObjectId("5ba9e3eee840eb1e91868720"),
"name" : "Jhon2",
"age" : 16,
"sex" : "male"
}
刪除
> db.students.remove({name: "Jhon2"})
刪除單條
> db.students.remove({ })
清空
使用Python操作MongoDB資料庫
安裝 pymongo
from pymongo import MongoClient
import datetime
# 連接資料庫
client = MongoClient() # 會連接到預設地址和埠,即 127.0.0.1:27017
# # 也可以寫成這樣
# client = MongoClient('localhost', 27017)
# client = MongoClient('mongodb://localhost:27017/')
# 創建資料庫
db = client.test_database # 創建名叫 test_database 的資料庫
# # db = client['test-database']
# 增加文檔
# 創建一條文檔
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
# 將post添加到資料庫,並獲得"_id"
post_id = db.posts.insert_one(post).inserted_id