簡介
Mongoose 是一個對象文檔模型庫,官網 http://www.mongoosejs.net/
作用:方便使用代碼操作 mongodb 數據庫
初體驗
//1. 安裝 mongoose
//2. 導入 mongoose
const mongoose = require('mongoose');
//設置 strictQuery 爲 true
mongoose.set('strictQuery', true);
//3. 連接 mongodb 服務 數據庫的名稱
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//4. 設置回調
// 設置連接成功的回調 once 一次 事件回調函數只執行一次
mongoose.connection.once('open', () => {
//5. 創建文檔的結構對象
//設置集合中文檔的屬性以及屬性值的類型
let BookSchema = new mongoose.Schema({
//name: String,
//author: String,
//price: Number
name: {
type: String,
required: true, // 表明該屬性必須不爲空
unique: true// 設置爲獨一無二的
},
author: {
type: String,
default: '匿名'
},
//類型
style: {
type: String,
//枚舉
enum: ['言情','城市','志怪','恐怖']
},
price: Number
});
//6. 創建模型對象 對文檔操作的封裝對象
let BookModel = mongoose.model('books', BookSchema);
//7. 新增
BookModel.create({
name: '西遊記',
// author: '吳承恩',
price: 19.9,
style: '志怪'
}, (err, data) => {
//判斷是否有錯誤
if(err) {
console.log(err);
// console.log('插入失敗~~~');
return;
}
//如果沒有出錯, 則輸出插入後的文檔對象
console.log(data);
//8. 關閉數據庫連接 (項目運行過程中, 不會添加該代碼)
mongoose.disconnect();
});
});
// 設置連接錯誤的回調
mongoose.connection.on('error', () => {
console.log('連接失敗');
});
//設置連接關閉的回調
mongoose.connection.on('close', () => {
console.log('連接關閉');
});
條件查詢
點擊查看代碼
//1. 安裝 mongoose
//2. 導入 mongoose
const mongoose = require('mongoose');
//設置 strictQuery 爲 true
mongoose.set('strictQuery', true);
//3. 連接 mongodb 服務 數據庫的名稱
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//4. 設置回調
// 設置連接成功的回調 once 一次 事件回調函數只執行一次
mongoose.connection.once('open', () => {
//5. 創建文檔的結構對象
//設置集合中文檔的屬性以及屬性值的類型
let BookSchema = new mongoose.Schema({
name: String,
author: String,
price: Number,
is_hot: Boolean
});
//6. 創建模型對象 對文檔操作的封裝對象 mongoose 會使用集合名稱的複數, 創建集合, 即爲 novels
let BookModel = mongoose.model('novel', BookSchema);
//價格小於 20 的圖書
// BookModel.find({price: {$lt: 20}}, (err, data) => {
// if(err) {
// console.log('讀取失敗~~');
// return;
// }
// console.log(data);
// })
//曹雪芹 或者 餘華的書
// BookModel.find({$or: [{author: '曹雪芹'}, {author: '餘華'}]}, (err, data) => {
// if (err) {
// console.log('讀取失敗~~');
// return;
// }
// console.log(data);
// })
//價格大於 30 且小於 70
// BookModel.find({$and: [{price: {$gt: 30}}, {price: {$lt: 70}}]}, (err, data) => {
// if (err) {
// console.log('讀取失敗~~');
// return;
// }
// console.log(data);
// })
//正則表達式, 搜索書籍名稱中帶有 `三` 的圖書
// BookModel.find({name: /三/}, (err, data) => {
// if (err) {
// console.log('讀取失敗~~');
// return;
// }
// console.log(data);
// })
BookModel.find({name: new RegExp('三')}, (err, data) => {
if (err) {
console.log('讀取失敗~~');
return;
}
console.log(data);
})
});
// 設置連接錯誤的回調
mongoose.connection.on('error', () => {
console.log('連接失敗');
});
//設置連接關閉的回調
mongoose.connection.on('close', () => {
console.log('連接關閉');
});
刪除文檔
點擊查看代碼
//1. 安裝 mongoose
//2. 導入 mongoose
const mongoose = require('mongoose');
//設置 strictQuery 爲 true
mongoose.set('strictQuery', true);
//3. 連接 mongodb 服務 數據庫的名稱
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//4. 設置回調
// 設置連接成功的回調 once 一次 事件回調函數只執行一次
mongoose.connection.once('open', () => {
//5. 創建文檔的結構對象
//設置集合中文檔的屬性以及屬性值的類型
let BookSchema = new mongoose.Schema({
name: String,
author: String,
price: Number,
is_hot: Boolean
});
//6. 創建模型對象 對文檔操作的封裝對象 mongoose 會使用集合名稱的複數, 創建集合
let BookModel = mongoose.model('novel', BookSchema);
//7. 刪除一條
// BookModel.deleteOne({_id: '63f34af50cf203761ede1892'}, (err, data) => {
// //判斷
// if(err){
// console.log('刪除失敗~~~');
// return;
// }
// //輸出 data
// console.log(data);
// });
//批量刪除
BookModel.deleteMany({is_hot: false}, (err, data) => {
//判斷
if(err){
console.log('刪除失敗~~~');
return;
}
//輸出 data
console.log(data);
});
});
// 設置連接錯誤的回調
mongoose.connection.on('error', () => {
console.log('連接失敗');
});
//設置連接關閉的回調
mongoose.connection.on('close', () => {
console.log('連接關閉');
});