fbpx

MongoDB CRUD基本觀念

MongoDB Create

新增或插入操作將新文檔添加到collection之中。如果collection當前不存在,則會插入操作將新增collection

  • db.collection.insert()

單筆文檔:將單個文檔插入collection中

新增一個新文檔

code

nInserted: 新增多少筆文檔

WriteResult({ "nInserted" : 1 })

多筆文檔:將多筆文檔插入collection中

新增多個文檔

code

回傳一個BulkWriteResult物件

code

 

  • db.collection.insertOne()

將單個文檔插入collection中

新增一個新文檔

code

回傳一個BulkWriteResult物件

code

 

  • db.collection.insertMany()

將多個文檔插入collection中

新增多筆文檔

code

回傳一個BulkWriteResult物件

code

MongoDB Read

  • 從collection中讀取操作文檔,在collection中查詢文檔

空查詢過濾器文檔({})選擇collection中的所有文檔。

db.collection.find({})

將查詢過濾器文檔省略到db.collection.find()等同於指定空查詢文檔。 

db.collection.find()

查詢單一個符合條件的第一個文檔,並且會以pretty()的方法呈現。

db.collection.findOne()

 

  • 查詢方式

MongoDB提供db.collection.find()方法來從collection中讀取文檔。該方法將游標返回到匹配的文檔。

db.collection.find(<query filter>, <projection>)

<query filter>:查詢過濾器,用於指定要返回的文檔。

<projection>:一個查詢投影,用於指定要返回的匹配文檔中的哪個字段。

 

  • 指定查詢過濾條件

指定相等條件

{ <field1> : <value1>, ... }

範例:

db.employees.find( { name : "SMITH" } )

  • 使用查詢運算符指定條件

{ <field1>  :  { <operator1> : <value1> ,  ... }

範例:

db.emplyees.find( { name : { $in : [ "SMITH" , "ALLEN" ] } } )

 

  • 指定AND條件

db.employees.find( { empno : 7499 , name : "ALLEN" } )

  • 指定OR條件

db.employees.find( { $or : [ { deptno : 30 } , { sal : { $lt : 1000 } } ] } )

  • 指定AND以及OR條件

db.employees.find( { deptno : 30 , $or : [ { deptno : 30 } , { sal : { $lt : 1000  } } ] } )

  • 投影文檔

投影文檔限制所有匹配文檔的返回字段,他可以指定字段的包含/排除。

{ field1 : <value>, field2 : <value> ... }

<value>可以是以下任何一種:

  • 1或true為包括該字段
  • 0或false為排除該字段

code

code2

  • 查詢Null或缺少字段

平等過濾器

db.emplyees.find( { name : "SMITH" , sex : null } )

類型檢查(BSON Type)

db.emplyees.find( { name : "SMITH" , sex : { $type : 10 } } )

存在檢查

db.emplyees.find( { sex : { $exists : false } } )

  • 在mongo shell中迭代一個游標

手動迭代游標

code

與forEach()相同

var mCur = db.emplyees.find( { deptno : 30 } )
mCur.forEach( printjson );

迭代索引:toArray()迭代方法並以陣列形式傳回文檔

var mCUR = db.employees.find( { deptno : 30 } );
var docAry = mCur.toArray();
var mDoc = docAry[3];
printjson( mDoc )

MongoDB Update

  • 更新操作可修改collection中的現有文檔

    • db.collection.update()
    • db.collection.updateOne()
    • db.collection.updateMany()
    • db.collection.replaceOne()

  • 要更新文檔中的字段,MongoDB提供更新運算符,例如$set來修改值

code

如果字段不存在,某些更新運算符(如$set)將新增該字段。

db.collection.update()

更新單個紀錄(比如:db.collection.updateOne())

code

更新多個紀錄(比如:db.collection.updateMany())

code

  • 替換文檔

db.collection.replaceOne()

將與過濾器名稱匹配的第一個文檔替換為與新文檔相同的”SMITH”:

code

db.collection.update()

code

 

MongoDB Delete

  • 刪除操作從collection中刪除文檔

    • db.collection.remove()
    • db.collection.deleteOne()
    • db.collection.deleteMany()

  • 刪除所有文檔

要從collection中刪除所有文檔,請將空過濾器文檔{}傳遞給db.collection.remove()db.collection.deleteMany()

但如果要從collection中刪除所有文檔,使用db.collection.drop()方法刪除整個collection(包括索引)會更有效。

 

  • 僅刪除一個與條件匹配的文檔

刪除指定過濾器匹配的單個文檔,即使匹配到多個文檔

code

刪除所有指定過濾器匹配的文檔

code

批量寫入操作

  • MongoDB提供用戶能多批量執行寫入操作。

  • 批量寫入操作可以是有序列的,也可以是無序列的。

    • 有序列的:

串列操作:如果發生錯誤,將回傳而不處理任何剩餘的操作。

{ordered:true}

  • 無序列的:

並行操作:但行為無法保證,如果發生錯誤,將繼續處理剩餘程序。

{ordered:false}

SQL轉至MongoDB對映表—新增與更改

code

code

SQL轉至MongoDB對映表查詢

code

code

SQL轉至MongoDB對映表—更新與刪除

相關文章