1. 程式人生 > 資訊 >同臺積電一樣,訊息人士透露三星將在美國新建的也是 5nm 工廠

同臺積電一樣,訊息人士透露三星將在美國新建的也是 5nm 工廠

使用 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()