MongoDB入門

SQL
- 結構化查詢語言
- 關系數(shù)據(jù)庫全都同SQL來操作
1.安裝MongoDB
- 安裝
- 配置環(huán)境變量
C:\Program Files\MongoDB\Server\3.2\bin
- 在c盤根目錄
- 創(chuàng)建一個文件夾 data
- 在data中創(chuàng)建一個文件夾db
- 打開cmd命令行窗口
- 輸入 mongod 啟動mongodb服務器
- 32位注意:
啟動服務器時,需要輸入如下內(nèi)容
mongod --storageEngine=mmapv1
mongod --dbpath 數(shù)據(jù)庫路徑 --port 端口號
- 在打開一個cmd窗口
- 輸入 mongo 連接mongodb ,出現(xiàn) >?
- 數(shù)據(jù)庫(database)
- 數(shù)據(jù)庫的服務器
- 服務器用來保存數(shù)據(jù)
- mongod 用來啟動服務器
- 數(shù)據(jù)庫的客戶端
- 客戶端用來操作服務器,對數(shù)據(jù)進行增刪改查的操作
- mongo 用來啟動客戶端
- 將MongoDB設置為系統(tǒng)服務,可以自動在后臺啟動,不需要每次都手動啟動
1.在c盤根目錄創(chuàng)建data
- 在data下創(chuàng)建db和log文件夾
2.創(chuàng)建配置文件
在目錄 C:\Program Files\MongoDB\Server\3.2 下添加一個配置文件
mongod.cfg
3.以管理員的身份打開命令行窗口
4.執(zhí)行如下的命令
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
sc.exe create MongoDB binPath= "\"mongod的bin目錄\mongod.exe\" --service --config=\"mongo的安裝目錄\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
5.啟動mongodb服務
6.如果啟動失敗,證明上邊的操作有誤,
在控制臺輸入 sc delete MongoDB 刪除之前配置的服務
然后從第一步再來一次
- 基本概念
數(shù)據(jù)庫(database)
集合(collection)
文檔(document)
- 在MongoDB中,數(shù)據(jù)庫和集合都不需要手動創(chuàng)建,
當我們創(chuàng)建文檔時,如果文檔所在的集合或數(shù)據(jù)庫不存在會自動創(chuàng)建數(shù)據(jù)庫和集合
- 基本指令
show dbs
show databases
- 顯示當前的所有數(shù)據(jù)庫
use 數(shù)據(jù)庫名
- 進入到指定的數(shù)據(jù)庫中
db
- db表示的是當前所處的數(shù)據(jù)庫
show collections
- 顯示數(shù)據(jù)庫中所有的集合
- 數(shù)據(jù)庫的CRUD(增刪改查)的操作
- 向數(shù)據(jù)庫中插入文檔
db.<collection>.insert(doc)
- 向集合中插入一個文檔
- 例子:向test數(shù)據(jù)庫中的,stus集合中插入一個新的學生對象
{name:"孫悟空",age:18,gender:"男"}
db.stus.insert({name:"孫悟空",age:18,gender:"男"})
db.<collection>.find()
- 查詢當前集合中的所有的文檔
-----------------------------
node
- 包(package)
- 將多個模塊組合為一個完整的功能,就是一個包
- 包結構
bin
- 二進制的可執(zhí)行文件,一般都是一些工具包中才有
lib
- js文件
doc
- 文檔
test
- 測試代碼
package.json
- 包的描述文件
- package.json
- 它是一個json格式的文件,在它里面保存了包各種相關的信息
name 包名
version 版本
dependencies 依賴
main 包的主要的文件
bin 運行的代碼
- npm(Node Package Manager node的包管理器)
- 通過npm可以對node中的包進行上傳、下載、搜索等操作
- npm會在安裝完node以后,自動安裝
- npm的常用指令
npm -v 查看npm的版本
npm version 查看所有模塊的版本
npm init 初始化項目(創(chuàng)建package.json)
npm i/install 包名 安裝指定的包
npm i/install 包名 --save 安裝指定的包并添加依賴
npm i/install 包名 -g 全局安裝(一般都是一些工具)
npm i/install 安裝當前項目所依賴的包
npm s/search 包名 搜索包
npm r/remove 包名 刪除一個包
文件系統(tǒng)(File System)
- Buffer(緩沖區(qū))
- Buffer和數(shù)組的結構的非常類似,Buffer是用來存儲二進制數(shù)據(jù)的
- Buffer的方法
- Buffer.from(字符串)
- 將一個字符串中內(nèi)容保存到一個buffer中
- buf.toString()
- 將buffer轉(zhuǎn)換為一個字符串
- Buffer.alloc(size)
- 創(chuàng)建一個指定大小的buffer對象
- Buffer.allocUnsafe(size)
- 創(chuàng)建一個指定大小的buffer對象,可以包含敏感數(shù)據(jù)
- fs模塊
- 在Node通過fs模塊來對系統(tǒng)中的文件進行操作,fs模塊是node中已經(jīng)繼承好了,不需要在使用npm下載,直接引入即可
- 引入fs
var fs = require("fs");
- fs模塊中的大部分操作都提供了兩種方法,同步方法和異步方法
同步方法帶sync
異步方法沒有sync,都需要回調(diào)函數(shù)
- 寫入文件
1.同步寫入
2.異步寫入
3.簡單寫入
4.流式寫入
- 讀取文件
1.同步讀取
2.異步讀取
3.簡單讀取
4.流式讀取
- 方法
- 打開文件
fs.open(path, flags[, mode], callback)
fs.openSync(path, flags[, mode])
- 讀寫文件
fs.write(fd, string[, position[, encoding]], callback)
fs.writeSync(fd, string[, position[, encoding]])
fs.read(fd, buffer, offset, length, position, callback)
fs.readSync(fd, buffer, offset, length, position)
- 關閉文件
fs.close(fd,callback)
fs.closeSync(fd);
- 簡單文件讀取和寫入
fs.writeFile(file, data[, options], callback)
fs.writeFileSync(file, data[, options])
fs.readFile(path[, options], callback)
fs.readFileSync(path[, options])
- 流式文件讀取和寫入
- 流式讀取和寫入適用于一些比較大的文件
fs.createWriteStream(path[, options])
fs.createReadStream(path[, options])
----------------
MongoDB
- MongoDB是一個NoSQL的數(shù)據(jù)庫
- MongoDB是一款文檔型數(shù)據(jù)庫
- 數(shù)據(jù)庫指的就是一個存儲數(shù)據(jù)的倉庫
數(shù)據(jù)庫可以使我們完成對數(shù)據(jù)的持久化的操作
- MongoDB數(shù)據(jù)庫中存儲的數(shù)據(jù)的基本單位就是文檔,
MongoDB中存儲的就是文檔,所謂文檔其實就是一個“JSON”
- MongoDB中的“JSON”我們稱為BSON,比普通的JSON的功能要更加的強大
- MongoDB數(shù)據(jù)庫使用的是JavaScript進行操作的,在MongoDB含有一個對ES標準實現(xiàn)的引擎,
在MongoDB中所有ES中的語法中都可以使用
- MongoDB的基本的指令
- 啟動服務器
mongod --dbpath 路徑 --port 端口號
- 啟動客戶端
mongo
- MongoDB的CRUD的操作
- 基本操作
use 數(shù)據(jù)庫
- 進入指定的數(shù)據(jù)庫
show dbs
- 顯示所有的數(shù)據(jù)庫
show collections
- 顯示數(shù)據(jù)庫中所有的集合
db
- 顯示當前所在的數(shù)據(jù)庫
- 向數(shù)據(jù)庫中插入文檔
- db.collection.insert()
- insert()可以向集合中插入一個或多個文檔
- db.collection.insertOne()
- 向集合中插入一個文檔
- db.collection.insertMany()
- 向集合中插入多個文檔
- 查詢數(shù)據(jù)庫中的文檔
- db.collection.find()
- 可以根據(jù)指定條件從集合中查詢所有符合條件的文檔
- 返回的是一個數(shù)組
- db.collection.findOne()
- 查詢第一個符合條件的文檔
- 返回的是一個對象
- db.collection.find().count()
- 查詢符合條件的文檔的數(shù)量
- 修改數(shù)據(jù)庫中的文檔
- db.collection.update()
- 可以修改、替換集合中的一個或多個文檔
- db.collection.updateOne()
- 修改集合中的一個文檔
- db.collection.updateMany()
- 修改集合中的多個文檔
- db.collection.replaceOne()
- 替換集合中的一個文檔
- 刪除集合中的文檔
- db.collection.remove()
- 刪除集合中的一個或多個文檔(默認刪除多個)
- db.collection.deleteOne()
- 刪除集合中的一個文檔
- db.collection.deleteMany()
- 刪除集合中的多個文檔
- 清空一個集合
db.collection.remove({})
- 刪除一個集合
db.collection.drop()
- 刪除一個數(shù)據(jù)庫
db.dropDatabase()