Java開發學習--MongoDB

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

主鍵

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

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

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

查詢的時候也不同:分佈式

查詢語句(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"}})複製代碼

查詢操做符

聯表查詢

由於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等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!

相關文章
相關標籤/搜索