nodejs學習05——mongoose

簡介

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('連接關閉');
});


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章