以前只學過sql,第一次使用非關係型數據庫。之前對於關係型數據庫與非關係型數據庫的概念很模糊,經過此次的學習對這二者有了一個清晰的概念。sql
在MongoDB中,主鍵名叫"_id",若是在生成數據的時候,用戶不主動爲其分配一個主鍵的話,MongoDB會自動生成一個隨機分配的值。數據庫
第一條數據是我一開始忘了分配主鍵,MongoDB自動生成的值,類型爲ObjectId。bash
第二條數據是我主動分配主鍵,類型爲String。學習
查詢的時候也不同:ui
MongoDB語法:db.colloection.find()
sql:select * from collection
複製代碼
collection是集合的名稱,相似於sql的table。spa
MongoDB:db.collection.find({},{"teamName":1})
sql:select teamName from collection複製代碼
MongoDB:db.collection.find({"teamName":"good"})
sql:select * from collection where teamName = "good"複製代碼
db.collection.find({查詢條件},{查詢列})複製代碼
db.team.insert({"teamName":"111","creator":"xxx"})複製代碼
db.team.remove({"teamName":"111"})複製代碼
不帶參數將會刪除所有數據。code
db.team.update({條件},{$set:{新數據}})複製代碼
例如:修改id爲111的team的名字cdn
db.team.update({"_id":"111"},{$set:{"teamName":"999"}})複製代碼
由於MongoDB是非關係型數據庫,而非關係型數據庫有一個特色就是表之間屬於弱關聯。可是我在網上看到一種可以實現MongoDB關聯查詢的一種方法。blog
db.product.aggregate([
{
$lookup://關聯
{
from: "orders", // 須要關聯的表
localField: "_id", // product 表須要關聯的鍵
foreignField: "pid", // orders 的 matching key
as: "inventory_docs" // 對應的外鍵集合的數據
}
},
{
$match: {//篩選數據
price: { $gt:20 }
}
},
{
$project:{//獲取指定字段
"inventory_docs": 1,
"_id": 0
}
}
])
複製代碼
$lookup:關聯表rem
$match:篩選數據
$project:獲取指定字段