Java後臺開發學習(3)——MongoDB

ahiru?發表於2018-12-11

之前只學過sql,第一次使用非關係型資料庫。以前對於關係型資料庫與非關係型資料庫的概念很模糊,通過這次的學習對這兩者有了一個清晰的概念。

主鍵

在MongoDB中,主鍵名叫"_id",如果在生成資料的時候,使用者不主動為其分配一個主鍵的話,MongoDB會自動生成一個隨機分配的值。

Java後臺開發學習(3)——MongoDB

第一條資料是我一開始忘了分配主鍵,MongoDB自動生成的值,型別為ObjectId。

第二條資料是我主動分配主鍵,型別為String。

查詢的時候也不一樣:

Java後臺開發學習(3)——MongoDB

Java後臺開發學習(3)——MongoDB


查詢語句(find)

集合簡單查詢方法

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({查詢條件},{查詢列})複製程式碼


增(insert):

db.team.insert({"teamName":"111","creator":"xxx"})複製程式碼


刪(remove):

db.team.remove({"teamName":"111"})複製程式碼

不帶引數將會刪除全部資料。


改(update):

db.team.update({條件},{$set:{新資料}})複製程式碼

例如:修改id為111的team的名字

db.team.update({"_id":"111"},{$set:{"teamName":"999"}})複製程式碼


查詢操作符

Java後臺開發學習(3)——MongoDB


聯表查詢

因為MongoDB是非關係型資料庫,而非關係型資料庫有一個特點就是表之間屬於弱關聯。但是我在網上看到一種能夠實現MongoDB關聯查詢的一種方法。


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:關聯表

$match:篩選資料

$project:獲取指定欄位


相關文章