首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

MongoDB CRUD 進階詳解:插入、查詢、更新與 Upsert

     編輯:DB2 教學

一、插入操作

1. 單筆插入

var single = {
  "name": "chenglong",
  "password": "12345",
  "age": 20,
  "address": {"province": "anhui", "city": "hefei"},
  "favourite": ["apple", "banana"]
};
db.user.insert(single);
db.user.find();

支援巢狀物件、陣列,資料模型極具彈性。

2. 批量插入

在 Shell 中使用 for 迴圈即可:

for (var i=0; i<100; i++) {
  db.user.insert({"name": "user"+i, "age": 20+i%50});
}

二、查詢操作

1. 比較運算子

SQLMongoDB範例
>$gtdb.user.find({"age":{$gt:19}})
>=$gtedb.user.find({"age":{$gte:19}})
<$ltdb.user.find({"age":{$lt:22}})
<=$ltedb.user.find({"age":{$lte:22}})
!=$nedb.user.find({"age":{$ne:22}})
=無特殊關鍵字db.user.find({"age":22})

2. 邏輯與集合運算子

// AND (隱性)
db.user.find({"name":"chenglong","age":20})

// OR
db.user.find({$or: [{"address.province":"anhui"}, {"address.province":"hunan"}]})

// IN
db.user.find({"address.province": {$in: ["anhui","guangdong"]}})

// NOT IN
db.user.find({"address.province": {$nin: ["anhui","guangdong"]}})

3. 正則表達式查詢

// name 以 c 開頭且以 g 結尾
db.user.find({"name": /^c/, "name": /g$/})

4. $where 終極武器

// 以 JavaScript 函式表達複雜條件
db.user.find({$where: function(){ return this.name == 'chenglong'; }})

三、更新操作

1. 整份文件替換

var upd = db.user.findOne({"name":"chenglong"});
upd.age = 30;
db.user.update({"name":"chenglong"}, upd);

2. 局部更新修飾符

修飾符用途範例
$inc數值增減 (不存在則建立)db.user.update({"name":"chenglong"}, {$inc:{"age":30}})
$set指定欄位設值 (不存在則建立)db.user.update({"name":"chenglong"}, {$set:{"age":10}})

3. Upsert (更新或插入)

update 第三參數設 true:符合條件則更新,否則插入新文件。

db.user.update({"name":"chenglong"}, {$inc:{"age":11}}, true);
Upsert 避免了應用層「查詢判斷再決定更新或插入」的往返開銷,是高併發場景的常用模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved