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

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

主鍵

在MongoDB中,主鍵名叫"_id",若是在生成數據的時候,用戶不主動爲其分配一個主鍵的話,MongoDB會自動生成一個隨機分配的值。數據庫


第一條數據是我一開始忘了分配主鍵,MongoDB自動生成的值,類型爲ObjectId。bash

第二條數據是我主動分配主鍵,類型爲String。學習

查詢的時候也不同:ui




查詢語句(find)

集合簡單查詢方法

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


增(insert):

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


刪(remove):

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

不帶參數將會刪除所有數據。code


改(update):

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:獲取指定字段

相關文章
相關標籤/搜索