nodejs之MongoDB 非關係型資料庫

碼界小學生發表於2020-09-26


一、MongoDB是什麼?

MongoDB 是一種文件資料庫,它所具備的可擴充套件性和靈活性可以滿足您對查詢和索引的需求

二、使用

1. 下載安裝

1.下載安裝包:https://www.mongodb.com/download-center/community
2.安裝流程:
next
勾選同意 -> next
選擇complete
去掉Install MongoDB as a Service -> next
去掉Install MongoDB Compass -> next
install …
finish
3.在cmd中執行 mongod 啟動資料庫(保留當前終端視窗,等待連線),提示缺少目錄:c:\data\db 需要自己建立
4.在cmd中執行 mongo 連線運算元據庫,執行 show dbs,顯示資料庫,安裝成功!!!

注意:提示找不到命令,需要去配置系統環境變數(配置完重啟cmd後執行3 4)
配置系統環境變數:C:\Program Files\MongoDB\Server\4.2\bin

2. 指令

mongod  啟動資料庫(保留當前終端視窗,等待連線)
mongo   連線運算元據庫

show dbs    檢視所有資料庫
db  檢視當前資料庫
use mydb    切換到指定資料庫(不存在則建立資料庫)
db.dropDatabase()   刪除當前資料庫(注意切換到指定資料庫)

show collections    檢視當前資料庫已有集合(表)
db.createCollection("users")    建立集合(表)
db.users.drop()    刪除當前資料庫中的users集合

db.users.insert({name:'xm',age:23,sex:1})  向集合中插入文件(集合不存在會被自動建立)

db.users.remove({'title':'123'})   刪除所有title為123的資料
db.users.remove({'title':'123'},1)   刪除1條title為123的資料
db.users.remove({})   刪除所有資料

db.users.update({'title':'123'},{$set:{'title':'456'}})    更新集合內容

db.users.find()  查詢當前集合所有內容
db.users.find({key1:value1})  查詢當前集合指定內容
db.users.find({age:{$gt:25}}) 查詢age大於25的文件
db.users.find({age:{$lt:25}}) 查詢age小於25的文件
db.users.find({age:{$ne:25}}) 查詢age不等於25的文件
db.users.find({age:{$in:[20,25]}}) 查詢age為20和25的文件
db.users.find({$or:[{age:{$gt:22}},{sex:1}]}) 查詢age大於22 或 sex為1的文件
db.users.find({$and:[{age:{$gt:22}},{sex:1}]}) 查詢age大於22 且 sex為1的文件
db.users.find({name:/m$/}) 正規表示式查詢name結尾是m的文件

3. mongoose模組

mongoose模組,node運算元據的外掛

文件:http://mongoosejs.net/docs/index.html
安裝:npm install mongoose
mongoose 的一切始於 Schema
通過schema物件來運算元據庫

  • 建立連線
// 引入模組
const mongoose = require('mongoose')
// 連線資料庫test
mongoose.connect('mongodb://localhost/test',{ useNewUrlParser: true,  useUnifiedTopology: true })
// 連線資料庫物件
let db = mongoose.connection
// 監聽連線失敗事件
db.on('error', console.error.bind(console, 'connection error:'))
// 監聽連線成功事件
db.on('open', function() {
	console.log('====== db connect ok======')
})
  • 建立schema物件
const mongoose = require('mongoose')
//建立schema物件
const userSchema = mongoose.Schema({
	user: {type: String, required: true},
	pass: {type: String, required: true}
})
// 把schema物件轉成與集合關聯的資料模型
let User = mongoose.module('users', userSchema)
// 通過User物件對資料進行增刪改查

// 匯出
module.exports = User
  • 運算元據庫

返回一個promise物件

// 增加資料
User.insertMany({user: 'jack', pass: 123})
.then((data) => {
	console.log('新增成功')  // 返回值是一個陣列 [{}]
})
.catch((err) => {
	console.log(err)
})

// 刪除資料
User.remove({user: 'jack'})
.then((data) => {
	console.log(data) // 返回值是一個物件 { n: 1, ok: 1, deletedCount: 1 }
})

// 修改資料
User.update({user: 'jack'}, {$set: {user: 'lucy'}})
.then((data) => {
	console.log(data) // 返回值是 { n: 1, nModified: 1, ok: 1 }  { n: 0, nModified: 0, ok: 1 }
})

// 查詢資料
User.find({pass: '123'})
.then((data) => {
	console.log(data) // 返回值是陣列 [{...}, {...}]
})

相關文章