以前只學過sql,第一次使用非關係型數據庫。之前對於關係型數據庫與非關係型數據庫的概念很模糊,經過此次的學習對這二者有了一個清晰的概念。sql
在MongoDB中,主鍵名叫"_id",若是在生成數據的時候,用戶不主動爲其分配一個主鍵的話,MongoDB會自動生成一個隨機分配的值。數據庫
第一條數據是我一開始忘了分配主鍵,MongoDB自動生成的值,類型爲ObjectId。架構
第二條數據是我主動分配主鍵,類型爲String。併發
查詢的時候也不同:分佈式
MongoDB語法:db.colloection.find() sql:select * from collection 複製代碼
collection是集合的名稱,相似於sql的table。高併發
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"})複製代碼
不帶參數將會刪除所有數據。性能
db.team.update({條件},{$set:{新數據}})複製代碼
例如:修改id爲111的team的名字學習
db.team.update({"_id":"111"},{$set:{"teamName":"999"}})複製代碼
由於MongoDB是非關係型數據庫,而非關係型數據庫有一個特色就是表之間屬於弱關聯。可是我在網上看到一種可以實現MongoDB關聯查詢的一種方法。spa
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:關聯表blog
$match:篩選數據
$project:獲取指定字段
歡迎工做一到五年的Java工程師朋友們加入Java架構開發: 855835163 羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!