日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Mongoose 入门以及实现数据的增、删、改、查

發布時間:2024/6/21 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 Mongoose 入门以及实现数据的增、删、改、查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mongoose 介紹

Mongoose 是在 node.js 異步環境下對 mongodb 進行便捷操作的對象模型工具。Mongoose 是 NodeJS 的驅動,不能作為其他語言的驅動。

Mongoose 有兩個特點:通過關系型數據庫的思想來設計非關系型數據庫;基于 mongodb 驅動,簡化操作

官網:https://mongoosejs.com/

mongoose 的安裝以及使用

第一步:初始化項目

創建一個項目文件夾,進入文件夾生成package.json文件

npm init --yes

第二步:安裝mongoose

npm i mongoose --save

第三步:創建操作mongoose的js模塊并且引入和連接數據庫

需要先啟動mongoDB服務,并且先創建一個數據庫eggcms和一個users集合(表)

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');

第四步:定義Schema

數據庫中的 Schema,為數據庫對象的集合。 schema 是 mongoose 里會用到的一種數據模式, 可以理解為表結構的定義;每個 schema 會映射到 mongodb 中的一個 collection,它不具備 操作數據庫的能力

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');


// 定義一個Schema,操作users集合
// Schema里面的對象和數據庫表里面的字段需要一一對應
let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
})

第五步:創建數據模型

定義好了 Schema,接下就是生成 Model。model 是由 schema 生成的模型,可以對數據庫的 操作。

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');


// 定義一個Schema,操作users集合
// Schema里面的對象和數據庫表里面的字段需要一一對應
let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
})


// 定義數據庫模型  操作數據庫
// 注意:mongoose.model 里面可以傳入兩個參數也可以傳入三個參數,mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema,參數 3:數據庫集合名 稱)
// 如果傳入 3 個參數的話:模型默認操作第三個參數定義的集合名稱
// 如果傳入 2 個參數的話:這個模型會和模型名稱相同的復數的數據庫建立連接:如通過下面 方法創建模型,那么這個模型將會操作 users 這個集合。
// var User = mongoose.model('User',UserSchema);    // 默認會操作 users表(集合)
var User = mongoose.model('User',UserSchema,'users');  //默認會操作第三個參數配置的表  user表(集合)

第六步:操作數據庫

增加數據,通過實例化User Molde 創建增加的數據,最后實例.save()

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');


// 定義一個Schema,操作users集合
// Schema里面的對象和數據庫表里面的字段需要一一對應
let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
})


// 定義數據庫模型  操作數據庫
// 注意:mongoose.model 里面可以傳入兩個參數也可以傳入三個參數,mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema,參數 3:數據庫集合名 稱)
// 如果傳入 3 個參數的話:模型默認操作第三個參數定義的集合名稱
// 如果傳入 2 個參數的話:這個模型會和模型名稱相同的復數的數據庫建立連接:如通過下面 方法創建模型,那么這個模型將會操作 users 這個集合。
// var User = mongoose.model('User',UserSchema);    // 默認會操作 users表(集合)
let User = mongoose.model('User',UserSchema,'users');  //默認會操作第三個參數配置的表  user表(集合)

// 增加數據
let u = new User({
  name: '李四',
  age: 23,
  status: 1
})
u.save((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('增加數據成功')
})

查詢users表的數據

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');


// 定義一個Schema,操作users集合
// Schema里面的對象和數據庫表里面的字段需要一一對應
let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
})


// 定義數據庫模型  操作數據庫
// 注意:mongoose.model 里面可以傳入兩個參數也可以傳入三個參數,mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema,參數 3:數據庫集合名 稱)
// 如果傳入 3 個參數的話:模型默認操作第三個參數定義的集合名稱
// 如果傳入 2 個參數的話:這個模型會和模型名稱相同的復數的數據庫建立連接:如通過下面 方法創建模型,那么這個模型將會操作 users 這個集合。
// var User = mongoose.model('User',UserSchema);    // 默認會操作 users表(集合)
let User = mongoose.model('User',UserSchema,'users');  //默認會操作第三個參數配置的表  user表(集合)

// 增加數據
let u = new User({
  name: '李四',
  age: 23,
  status: 1
})
u.save((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('增加數據成功')
})


// 查詢users表的數據
User.find({}, (err, doc) => {
  if (err) {
    console.log(err)
    return
  }
  console.log(doc)
})

更新數據

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');


// 定義一個Schema,操作users集合
// Schema里面的對象和數據庫表里面的字段需要一一對應
let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
})


// 定義數據庫模型  操作數據庫
// 注意:mongoose.model 里面可以傳入兩個參數也可以傳入三個參數,mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema,參數 3:數據庫集合名 稱)
// 如果傳入 3 個參數的話:模型默認操作第三個參數定義的集合名稱
// 如果傳入 2 個參數的話:這個模型會和模型名稱相同的復數的數據庫建立連接:如通過下面 方法創建模型,那么這個模型將會操作 users 這個集合。
// var User = mongoose.model('User',UserSchema);    // 默認會操作 users表(集合)
let User = mongoose.model('User',UserSchema,'users');  //默認會操作第三個參數配置的表  user表(集合)



// 更新數據
User.updateOne({
  '_id': '5cdc42953beb59420c5893c6'
}, {
  'name': '王五',
  'age': 11
}, (err, doc) => {
  if (err) {
    console.log(err)
    return
  }
  console.log(doc)
})

刪除數據

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms');

// 如果有賬戶密碼需要采用下面的連接方式:
// mongoose.connect('mongodb://eggadmin:123456@127.0.0.1:27017/eggcms');


// 定義一個Schema,操作users集合
// Schema里面的對象和數據庫表里面的字段需要一一對應
let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
})


// 定義數據庫模型  操作數據庫
// 注意:mongoose.model 里面可以傳入兩個參數也可以傳入三個參數,mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema,參數 3:數據庫集合名 稱)
// 如果傳入 3 個參數的話:模型默認操作第三個參數定義的集合名稱
// 如果傳入 2 個參數的話:這個模型會和模型名稱相同的復數的數據庫建立連接:如通過下面 方法創建模型,那么這個模型將會操作 users 這個集合。
// var User = mongoose.model('User',UserSchema);    // 默認會操作 users表(集合)
let User = mongoose.model('User',UserSchema,'users');  //默認會操作第三個參數配置的表  user表(集合)



// 刪除數據
User.deleteOne({
  '_id': '5cdc42953beb59420c5893c6'
}, (err, result) => {
  if(err){
    return console.log(err);
  }
  console.log(result)
})

mongoose 默認參數

增加數據的時候,如果不傳入數據會使用默認配置的數據(在定義Schema的時候,去設置),下面增加數據的時候只寫了兩個參數

const mongoose = require('mongoose');

// useNewUrlParser是4.0版本之后,不寫這個參數會有警告,這個屬性會在url里識別驗證用戶所需的db,4.0前是不需要指定的
// 第三個參數添加一個回調函數,獲取數據庫連接是否成功
mongoose.connect('mongodb://127.0.0.1:27017/eggcms', { useNewUrlParser: true }, (err) => {
  if(err){
    return console.log(err);
  }
  console.log('數據庫連接成功')
});


let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: {
    type: Number,
    default: 1
  }
})

// 定義model操作數據庫
let User = mongoose.model('User',UserSchema,'users');



// 增加數據
let u = new User({
  name: '趙六',
  age: 23
})
u.save((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('增加數據成功')
})


// 查詢users表的數據
User.find({}, (err, doc) => {
  if (err) {
    console.log(err)
    return
  }
  console.log(doc)
})

mongoose 模塊化

在項目中操作數據庫的文件夾中,新建一個文件夾model,并且創建一個db.js文件用于連接數據庫,并且暴露出來即可

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/eggcms', { useNewUrlParser: true }, (err) => {
  if(err){
    return console.log(err);
  }
  console.log('數據庫連接成功')
});

module.exports = mongoose

接下來定義子模塊,比如操作users集合,那么就在model中創建一個users.js,并且將操作模型暴露出去

let mongoose = require('./db')

let UserSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: {
    type: Number,
    default: 1
  }
})

// 定義model操作數據庫
let UserModel = mongoose.model('User',UserSchema,'users');

module.exports = UserModel

然后再app.js中如果需要操作那個集合就引入哪個集合的操作模型,然后進行數據庫操作

let UserModel = require('./model/users')

// 增加數據
let u = new UserModel({
  name: '黃中國',
  age: 23
})
u.save((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('增加數據成功')

  // 查詢users表的數據
  UserModel.find({}, (err, doc) => {
    if (err) {
      console.log(err)
      return
    }
    console.log(doc)
  })
})

性能測試

console.time('user');
let UserModel = require('./model/users')
console.timeEnd('user');


// 假設還有一個模塊,引入user的時候,已經連接了數據庫,這里第二次引入別的模塊不會在連接數據庫,直接可以使用
console.time('news');
let UserModel = require('./model/news')
console.timeEnd('');

總結

以上是生活随笔為你收集整理的Mongoose 入门以及实现数据的增、删、改、查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。