一、mongodb
1.簡(jiǎn)介
1.1Mongodb是什么?
Mongodb是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)
1.2數(shù)據(jù)庫(kù)是什么?
數(shù)據(jù)庫(kù)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的應(yīng)用程序。
1.3數(shù)據(jù)庫(kù)的作用
主要作用就是管理數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行增刪改查
1.4數(shù)據(jù)庫(kù)管理數(shù)據(jù)的特點(diǎn)
相比于純文件,數(shù)據(jù)庫(kù)管理數(shù)據(jù)具有如下特點(diǎn):
1.速度更快
2.拓展性更強(qiáng)
3.安全性更強(qiáng)
2.核心概念
2.核心概念
Mongodb中有三個(gè)重要概念
- 數(shù)據(jù)庫(kù)是一個(gè)數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)庫(kù)服務(wù)下可以創(chuàng)建很多數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中可以存放很多集合
- 集合:集合類(lèi)似于JS中的數(shù)組,在集合中可以存放很多文檔
- 文檔:文檔是數(shù)據(jù)庫(kù)中的最小單位,類(lèi)似于JS中的對(duì)象
3.下載安裝與啟動(dòng)
https://www.mongodb.com/try/download/community
千萬(wàn)不要選中服務(wù)端窗口的內(nèi)容,選中會(huì)停止服務(wù),可以敲回車(chē)取消選中
4.命令行交互
4.1數(shù)據(jù)庫(kù)命令
1.顯示所有的數(shù)據(jù)庫(kù)
show dbs
2.切換到指定的數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在則會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)
use 數(shù)據(jù)庫(kù)名
3.顯示當(dāng)前所在數(shù)據(jù)庫(kù)
db
4.刪除當(dāng)前數(shù)據(jù)庫(kù)
use 庫(kù)名
db.dropDatabase()
4.2集合命令
1.創(chuàng)建集合
db.createCollection('集合名稱(chēng)')
2.顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有集合
show collections
3.刪除某個(gè)集合
db.集合名.drop()
4.重命名集合
db.集合名.renameCollection('new name')
4.3文檔命令
1.插入文檔
db.集合名.insert('文檔對(duì)象')
2.查詢(xún)文檔
db.集合名.find(查詢(xún)條件)
_id是mongodb自動(dòng)生成的唯一編號(hào),用來(lái)唯一標(biāo)識(shí)文檔
3.更新文檔
db.集合名.update(查詢(xún)條件,新的文檔)
db.集合名.update({name:'張三'},{$set:{age:19}})
4.刪除文檔
db.集合名.remove(查詢(xún)條件)
二、Mongoose
1.介紹
是一個(gè)對(duì)象文檔模型庫(kù)
2.作用
方便使用代碼操作mongodb數(shù)據(jù)庫(kù)
3.使用流程
// 安裝mongoose
// 導(dǎo)入mongoose
const mongoose = require('mongoose');
// 連接mongodb服務(wù) 數(shù)據(jù)庫(kù)的名稱(chēng)
mongoose.connect('mongodb://127.0.0.1:27017/abc')
/* 設(shè)置回調(diào) */
mongoose.connection.on('open',() => {
console.log('連接成功');
}); // 設(shè)置連接成功的回調(diào)
mongoose.connection.on('error',() => {
console.log('連接失敗');
}); //連接失敗的回調(diào)
mongoose.connection.on('close',() => {
console.log('連接關(guān)閉');
}); //設(shè)置連接關(guān)閉的回調(diào)
// 關(guān)閉mongodb的連接
setTimeout(() => {
mongoose.disconnect();
},2000)
4.插入文檔
出現(xiàn)以下問(wèn)題
throw new MongooseError('Model.create() no longer accepts a callback');
是由于mongoose版本太高,可以手動(dòng)降級(jí)
npm i mongoose@6.8.0
// 安裝mongoose
// 導(dǎo)入mongoose
const mongoose = require('mongoose');
// 連接mongodb服務(wù) 數(shù)據(jù)庫(kù)的名稱(chēng)
mongoose.connect('mongodb://127.0.0.1:27017/abc')
/* 設(shè)置回調(diào) */
mongoose.connection.once('open',() => {
// console.log('連接成功');
// 5.創(chuàng)建文檔的結(jié)構(gòu)對(duì)象
// 設(shè)置集合中文檔的屬性以及屬性值的類(lèi)型
let BookSchema = new mongoose.Schema({
name:String,
author: String,
price: Number
});
// 創(chuàng)建模型對(duì)象 對(duì)文檔操作的封裝對(duì)象
let BookModel = mongoose.model('books',BookSchema);
// 新增
BookModel.create({
name:'xiyouji',
author:'吳承恩',
price:19.9
},(err,data) => {
if(err){
console.log(err);
return;
}
// 如果沒(méi)有出錯(cuò),則輸出插入后的文檔對(duì)象
console.log(data);
// 關(guān)閉數(shù)據(jù)庫(kù)連接(項(xiàng)目運(yùn)行過(guò)程中不會(huì)添加此代碼)
mongoose.disconnect();
});
}); // 設(shè)置連接成功的回調(diào)
mongoose.connection.on('error',() => {
console.log('連接失敗');
}); //連接失敗的回調(diào)
mongoose.connection.on('close',() => {
console.log('連接關(guān)閉');
}); //設(shè)置連接關(guān)閉的回調(diào)
5.mongoose字段類(lèi)型
文檔結(jié)構(gòu)可選的常用字段類(lèi)型列表文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-745813.html
// 安裝mongoose
// 導(dǎo)入mongoose
const { Mixed } = require('mongoose');
const mongoose = require('mongoose');
// 連接mongodb服務(wù) 數(shù)據(jù)庫(kù)的名稱(chēng)
mongoose.connect('mongodb://127.0.0.1:27017/abc')
/* 設(shè)置回調(diào) */
mongoose.connection.once('open',() => {
// console.log('連接成功');
// 5.創(chuàng)建文檔的結(jié)構(gòu)對(duì)象
// 設(shè)置集合中文檔的屬性以及屬性值的類(lèi)型
let BookSchema = new mongoose.Schema({
name:String,
author: String,
price: Number,
is_hot:Boolean,
tags:Array,
pub_time:Date,
test:mongoose.Schema.Types.Mixed
});
// 創(chuàng)建模型對(duì)象 對(duì)文檔操作的封裝對(duì)象
let BookModel = mongoose.model('books',BookSchema);
// 新增
BookModel.create({
name:'xiyouji',
author:'吳承恩',
price:19.9,
is_hot:true,
tags:['鬼怪','勵(lì)志'],
pub_time:new Date(),
test:'abc'
},(err,data) => {
if(err){
console.log(err);
return;
}
// 如果沒(méi)有出錯(cuò),則輸出插入后的文檔對(duì)象
console.log(data);
// 關(guān)閉數(shù)據(jù)庫(kù)連接(項(xiàng)目運(yùn)行過(guò)程中不會(huì)添加此代碼)
mongoose.disconnect();
});
}); // 設(shè)置連接成功的回調(diào)
mongoose.connection.on('error',() => {
console.log('連接失敗');
}); //連接失敗的回調(diào)
mongoose.connection.on('close',() => {
console.log('連接關(guān)閉');
}); //設(shè)置連接關(guān)閉的回調(diào)
三、圖形化管理工具
我們可以使用圖形化的管理工具來(lái)對(duì)Mongodb進(jìn)行交互,文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745813.html
- Robo 3T 免費(fèi)
- Navicat
到了這里,關(guān)于node教程(四)Mongodb+mongoose的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!