同臺積電一樣,訊息人士透露三星將在美國新建的也是 5nm 工廠
阿新 • • 發佈:2021-05-18
使用 insert 完成插入操作
操作格式:
- db.<集合>.insertOne(<JSON物件>)
- db.<集合>.insertMany([<JSON物件>, <JSON物件>, ...<JSON物件>])
示例:
-
db.fruit.insertOne({name: "apple"})
-
db.fruit.insertMany([
{name: "apple"},
{name: "pear"},
{name: "orange"},
])
使用 find 查詢文件
關於 find :
- find 是 MongoDB 中查詢資料的基本指令,相當於 SQL 中的 SELECT。
- find 返回的是遊標。
find 示例:
db.movies.find({"year":1975}) // 單條件查詢 db.movies.find({"year":1975, "title":"Batman"}) // 多條件and查詢 db.movies.find({$and:[{"title":"Batman"},{"category":"action"}]}) // and的另一種形式 db.movies.find($or:[{"year":1987},{"title":"Batman"}]) // 多條件or查詢 db.movies.find("title":/^B//) // 按正則表示式查詢
查詢條件對照表
SQL | MQL |
---|---|
a = 1 | {a:1} |
a <> 1 | {a: {$ne: 1}} |
a > 1 | {a: {$gt: 1}} |
a >= 1 | {a: {$gte: 1}} |
a < 1 | {a: {$lt: 1}} |
a <= 1 | {a: {$lte: 1}} |
查詢邏輯對照表
SQL | MQL |
---|---|
a = 1 AND b = 1 | {a: 1, b: 1} 或 {$and: [{a: 1},{b: 1}]} |
a = 1 or b = 1 | {$or: [{a: 1}, {b: 1}]} |
a IS NULL | {a: {$exists: false}} |
a In (1, 2, 3) | {a: {$in: [1, 2, 3]}} |
查詢邏輯操作符
- $lt: 存在並小於
- $lte: 存在並小於等於
- $gt: 存在並大於
- $gte: 存在並大於等於
- $ne: 不存在或存在但不等於
- $in: 存在並在指定陣列中
- $nin: 不存在或不在指定陣列中
- $or: 匹配兩個或多個條件中的一個
- $and: 匹配全部條件
使用 find 搜尋子文件
find 支援使用 “field.sub_field” 的形式查詢子文件。假設有一個文件:
db.fruit.insertOne({
name: "apple",
from: {
country: "China",
province: "Guangdon"
}
})
考慮以下查詢的意義:
// 我要查詢from子文件country
db.fruit.find({"from.country": "China"})
// 我要查詢from欄位有一個country,country值為China
db.fruit.find({"from": {country: "China"}})
使用 find 搜尋陣列
find 支援對陣列中的元素進行搜尋。假設有一個文件:
db.fruit.insert([
{"name": "Apple", color: ["red", "green"]},
{"name": "Mango", color: ["yello", "green"]}
])
考慮以下查詢的意義:
// 查詢color陣列中有沒有值為red
db.fruit.find({color: "red"})
// 查詢color陣列中值為red或者為yellow
db.fruit.find({$or: [{color: "red"}, {color: "yellow"}]})
插入下列文件,在其中搜索
db.movies.insertOne({
"title": "Raiders of the Lost Ark",
"filming_locations": [
{"city": "Los Angeles", "state": "CA", "country": "USA"},
{"city": "Rome", "state": "Lazio", "country": "Italy"},
{"city": "Florence", "state": "SC", "country": "USA"}
]
})
// 查詢子文件城市是 Rome 的記錄
db.movies.find({"filming_locations.city": "Rome"})
在陣列中搜索子物件的多個欄位時,如果使用 $elemMatch,它表示必須是同一個子物件滿足多個條件。考慮以下兩個查詢:
db.getCollection('movies').find({
"filming_locations.city": "Rome",
"filming_locations.country": "USA"
})
db.getCollection('movies').find([
"filming_locations": {
$elemMatch: {"city": "Rome", "country": "USA"}
}
])
控制 find 返回的欄位
- find 可以指定只返回指定的欄位;
- _id欄位可以明確指明不返回,否則預設返回;
- 在 MongoDB 中我們稱這為投影(projection);
// 不返回_id 返回title
db.movies.find({"category": "action"},{"_id":0, title:1})
使用 remove 刪除文件
- remove 命令需要配合查詢條件使用;
- 匹配查詢條件的文件會被刪除;
- 指定一個空文件條件會刪除所有文件;
以下示例:
// 刪除a等於1的記錄
db.testcol.remove({a: 1})
//刪除a小於5的記錄
db.testcol.remove({a: {$lt: 5}})
// 刪除所有記錄
db.testcol.remove({})
// 報錯
db.testcol.remove()
使用 update 更新文件
Update 操作執行格式:db.<集合>.update(<查詢條件>, <更新欄位>)
舉例:
// 插入一條資料
db.fruit.insertMany({
{name: "apple"},
{name: "pear"},
{name: "orange"}
})
// 查詢name為apple的記錄,將其form值修改為China
db.fruit.updateOne({name: "apple"}, {$set: {from: "China"}})
使用 updateOne
表示無論條件匹配多少條記錄,始終只更新第一條;
使用 updateMany
表示條件匹配多少條就更新多少條;
updateOne
或者 updateMany
方法要求更新條件部分必須具有以下之一,否則將報錯:
- \(set/\)unset
- \(push/\)pushAll/$pop
- \(pull/\)pullAll
- $addToSet
// 報錯
db.fruit.updateOne({name: "apple"}, {from: "China"})
$push
:增加一個物件到陣列底部$pushAll
:增加多個物件到陣列底部$pop
:從陣列底部刪除一個物件$pull
:如果匹配指定的值,從陣列中刪除相應的物件$pullAll
:如果匹配任意的值,從資料中刪除相應的物件$addToSet
:如果不存在則增加一個值到陣列
使用 drop 刪除集合
- 使用db.<集合>.drop()來刪除一個集合
- 集合中的全部文件都會被刪除
- 集合相關的索引也會被刪除
- db.colToBeDropped.drop()