MongoDB

tags: MongoDB
SQL MongoDB 說明
database database 資料庫
table collection 資料表
row document 資料行
column field 資料欄位
index index 索引
join MongoDB不支援join
primary key primary key 主鍵,MongoDB自動將_id欄位設定為主鍵

建立資料庫 or 切換至已存在的資料庫

use DATABASE_NAME

刪除資料庫

use twcode01 //移動到欲刪除的資料表
db.dropDatabase()//刪除

建立群集(資料表)

db.createCollection(name, options)
  • name: 要建立的群集名稱
  • options: 可選引數, 指定有關記憶體大小及索引的選項
    • capped
      • boolean
      • 如果為 true,則建立固定群集。固定群集是指有著固定大小的群集,當達到最大值時,它會自動覆蓋最早的檔案。
    • autoIndexId
      • boolean
      • 如為 true,自動在 _id 欄位建立索引。預設為 false。
    • size
      • int
      • 如果 capped 為 true,也需要指定該欄位
    • max
      • int
      • 指定固定群集中包含檔案的最大數量

刪除群集(資料表)

db.collection_name.drop()

寫入檔案

db.COLLECTION_NAME.insert(document)

更新檔案

update()

update() 方法用於更新已存在的檔案

db.COLLECTION_NAME.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
  • query
    • update的搜尋條件,類似sql update搜尋內where後面的
  • update
    • update的物件和一些更新的運算子(如
      ,
      inc)等,也可以理解為sql update搜尋內set後面的
  • upsert
    • 如果不存在update的資料,是否寫入,true為寫入,預設是false,不寫入
  • multi
    • 預設是false,只更新找到的第一筆資料,如果這個引數為true,就把按條件查出來多條資料全部更新。
  • writeConcern
    • 拋出例外

save()

save() 方法透過傳入的檔案來取代已有檔案

db.COLLECTION_NAME.save(
   <document>,
   {
     writeConcern: <document>
   }
)
  • document
    • 檔案資料
  • writeConcern
    • 是否拋除例外

範例

只更新第一筆資料:

db.COLLECTION_NAME.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.COLLECTION_NAME.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只新增第一條:

db.COLLECTION_NAME.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部新增進去:

db.COLLECTION_NAME.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.COLLECTION_NAME.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一筆資料:

db.COLLECTION_NAME.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

刪除檔案

db.COLLECTION_NAME.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
  • query
    • 刪除的檔案的條件
  • justOne
    • 如果設為 true 或 1,則只刪除一個檔案,如果不設定該引數,或使用預設值 false,則刪除所有匹配條件的檔案
  • writeConcern
    • 拋出例外

搜尋檔案

db.COLLECTION_NAME.find(query, projection)
  • query
    • 使用搜尋運算子指定搜尋條件
  • projection
    • 使用投影運算子指定回傳的鍵。搜尋時回傳檔案中所有鍵值, 只需省略該引數即可

pretty() 方法以格式化的方式來顯示所有檔案。

db.COLLECTION_NAME.find().pretty()

MongoDB 與 RDBMS Where 敘述比較

操作 格式 範例
等於 {<key>:<value>} db.COLLECTION_NAME.find({"by":"test"}).pretty()
小於 {<key>:{$lt:<value>}} db.COLLECTION_NAME.find({"likes":{$lt:50}}).pretty()
小於或等於 {<key>:{$lte:<value>}} db.COLLECTION_NAME.find({"likes":{$lte:50}}).pretty()
大於 {<key>:{$gt:<value>}} db.COLLECTION_NAME.find({"likes":{$gt:50}}).pretty()
大於或等於 {<key>:{$gte:<value>}} db.COLLECTION_NAME.find({"likes":{$gte:50}}).pretty()
不等於 {<key>:{$ne:<value>}} db.COLLECTION_NAME.find({"likes":{$ne:50}}).pretty()

MongoDB 搜尋檔案 OR 條件、AND 條件
https://www.twcode01.com/mongodb/mongodb-query.html

條件運算子

  • > 大於 $gt
  • < 小於 $lt
  • >= 大於等於 $gte
  • <= 小於等於 $lte

運算

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

運算式

  • $sum 總和
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
  • $avg 平均值
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
  • $min 取得最小值
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
  • $max 取得最大值
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
  • $push 寫入值到一個陣列中
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
  • $addToSet 寫入值到一個陣列中,但不建立副本
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
  • $first 根據資源檔案的排序取得第一個檔案資料
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
  • $last 根據資源檔案的排序取得最後一個檔案資料
    • db.COLLECTION_NAME.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

操作

  • $project:修改輸入檔案的結構。可以用來重命名、增加或刪除域,也可以用於建立計算結果以及巢狀檔案。
  • match
    match使用MongoDB的標準搜尋操作。
  • $limit:用來限制MongoDB聚合管道回傳的檔案數。
  • $skip:在聚合管道中跳過指定數量的檔案,並回傳餘下的檔案。
  • $unwind:將檔案中的某一個陣列型別欄位拆解成多條,每條包含陣列中的一個值。
  • $group:將群集中的檔案分組,可用於統計結果。
  • $sort:將輸入檔案排序後輸出。
  • $geoNear:輸出接近某一地理位置的有序檔案。

https://www.twcode01.com/mongodb/mongodb-aggregate.html