上市在即,傳音 CAMON 19 系列確認採用 RGBW 鏡頭技術:與三星聯合研發
1. 介紹
1.1 什麼是MongoDB
MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統。
在高負載的情況下,新增更多的節點,可以保證伺服器效能。
MongoDB 旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件,陣列及文件陣列。是NoSQL。
1.2 什麼是NoSQL
NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL
NoSQL用於超大規模資料的儲存。(例如谷歌或Facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。
1.3 什麼是Mongoose
一般我們不直接用MongoDB的函式來操作MongoDB資料庫
Mongose就是一套操作MongoDB資料庫的介面
2. 準備
MongoDB安裝包括兩部分,一個是將MongoDB的服務下載下來並且安裝到自己電腦;一個是視覺化介面
2.1 安裝MongoDB
開啟官網 https://www.mongodb.com/try/download/community
下載安裝包後,即可開啟安裝,可以自己設定放置路徑
注意:下圖一定要取消安裝,compass客戶端視覺化介面我會另外下載。你要是選中了,那就是安裝了一天也完成不了
安裝完後,在安裝目錄的 **data **下需要自己手動建立一個 **db **資料夾
2.2 測試是否安裝成功
進入C:\Program Files\MongoDB\Server\5.0\bin(預設的安裝路徑),雙擊mongo.exe,
用記事本開啟mongod.cfg,可以看到,訪問埠號是:27017。可以修改,不過修改後需要重啟mongo.exe。
在瀏覽器訪問:http://127.0.0.1:27017 ,出現下面網頁,代表成功啟動。
當然這樣啟動會很麻煩,而且還不好關閉。怎麼做呢?
原來的版本需要自己配置,通過dos命令框來實現啟動和關閉MongoDB。現在不需要配置,直接以管理員模式執行dos命令框,通過命令啟動和關閉。
2.3 安裝視覺化工具
官網下載 RoBo 3T(Robomongo is now Robo 3T)
下載地址:https://robomongo.org/download
下載後安裝即可
開啟,建立新連線
連線成功後,在左邊的視窗上右鍵選項來建立資料庫,和open shell
來進行指令操作。
3. MongoDB 基礎操作
詳細請看:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
3.1 插入文件
insert({資料})
和 insertMany([{},{}])
都可以對集合增加文件,相當於給表增添記錄
3.2 更新文件
update(query, data)
後面還可以跟兩個Boolean值
- upsert:如果不存在要更新的記錄是否要插入,預設為 false
true為插入,false為不插入 - multi:如果有多條要更新的記錄是否全部更新,預設為 false
true為全部,false為第一個
其中,$set
為修改器,不用則就會整個文件都替換掉,就是說原來Tom哪一項就沒有name只有age了,加上,就只更新age
3.3 刪除文件
remove(query)
後面還可以加一個Boolean引數:justOne,為 true則只刪一條,預設為 false,就是全部刪除
3.4 查詢文件
find(query)
第二個引數是配置顯示欄位,_id是預設有的
3.4.1 AND 條件
db.col.find({key1:value1, key2:value2})
3.4.2 OR 條件
db.col.find({ $or: [ {key1: value1}, {key2:value2} ] })
3.4.3 條件操作符
$in, $nin, $and... 請看https://mp.weixin.qq.com/s?__biz=MzI1NDY0MTkzNQ==&mid=2247484284&idx=1&sn=b528df57af8b9c09ae86ac752913b7b9&scene=21#wechat_redirect
操作 | 格式 | 範例 | RDBMS中的類似語句 |
---|---|---|---|
等於 | { |
db.col.find({"by":"Tom"}) | where by = 'Tom' |
小於 | { |
db.col.find({"likes":{$lt:50}}) | where likes < 50 |
小於或等於 | { |
db.col.find({"likes":{$lte:50}}) | where likes <= 50 |
大於 | { |
db.col.find({"likes":{$gt:50}}) | where likes > 50 |
大於或等於 | { |
db.col.find({"likes":{$gte:50}}) | where likes >= 50 |
不等於 | { |
db.col.find({"likes":{$ne:50}}) | where likes != 50 |
3.4.4 $type 操作符
詳細請看:https://www.runoob.com/mongodb/mongodb-operators-type.html
db.test.find({ name: { $type: 'string' } })
3.4.5 limit()、skip()、sort()
limit()方法接受一個數字引數,該引數指定從MongoDB中讀取的記錄條數。db.COLLECTION_NAME.find().limit(NUMBER)
我們除了可以使用limit()方法來讀取指定數量的資料外,還可以使用skip()方法來跳過指定數量的資料,skip方法同樣接受一個數字引數作為跳過的記錄條數db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
sort用來實現排序功能
1表示升序,-1表示降序
4. Mongoose 基礎操作
詳情請看:參考手冊
npm install mongoose
import mongoose from 'mongoose'
// 連線資料庫
mongoose.connect('mongodb://localhost:27017/users', { useUnifiedTopology: true, useNewUrlParser: true })
// Schema定義了集合中文件的結構
const usersSchema = new mongoose.Schema({
username: String,
password: String
})
// Model是從Schema編譯來的建構函式。Model負責從MongoDB中建立和讀取文件
// 呼叫mongoose.model()時,Mongoose就會編譯一個Model
//
const Users = mongoose.model('users', usersSchema)
// 查詢
Users.find({}, {username: 1, _id: 0}, (err, user) => {
if (err) {
console.log(err)
return
}
console.log(user)
})