var single = {
"name": "chenglong",
"password": "12345",
"age": 20,
"address": {"province": "anhui", "city": "hefei"},
"favourite": ["apple", "banana"]
};
db.user.insert(single);
db.user.find();
支援巢狀物件、陣列,資料模型極具彈性。
在 Shell 中使用 for 迴圈即可:
for (var i=0; i<100; i++) {
db.user.insert({"name": "user"+i, "age": 20+i%50});
}
| SQL | MongoDB | 範例 |
|---|---|---|
| > | $gt | db.user.find({"age":{$gt:19}}) |
| >= | $gte | db.user.find({"age":{$gte:19}}) |
| < | $lt | db.user.find({"age":{$lt:22}}) |
| <= | $lte | db.user.find({"age":{$lte:22}}) |
| != | $ne | db.user.find({"age":{$ne:22}}) |
| = | 無特殊關鍵字 | db.user.find({"age":22}) |
// 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"]}})
// name 以 c 開頭且以 g 結尾
db.user.find({"name": /^c/, "name": /g$/})
// 以 JavaScript 函式表達複雜條件
db.user.find({$where: function(){ return this.name == 'chenglong'; }})
var upd = db.user.findOne({"name":"chenglong"});
upd.age = 30;
db.user.update({"name":"chenglong"}, upd);
| 修飾符 | 用途 | 範例 |
|---|---|---|
$inc | 數值增減 (不存在則建立) | db.user.update({"name":"chenglong"}, {$inc:{"age":30}}) |
$set | 指定欄位設值 (不存在則建立) | db.user.update({"name":"chenglong"}, {$set:{"age":10}}) |
update 第三參數設 true:符合條件則更新,否則插入新文件。
db.user.update({"name":"chenglong"}, {$inc:{"age":11}}, true);
Upsert 避免了應用層「查詢判斷再決定更新或插入」的往返開銷,是高併發場景的常用模式。