mongoose基本使用

10 篇文章 0 订阅
4 篇文章 0 订阅

1.什么是Mongoose?

  • Mongoose和MySQL的Sequelize一样, 都是NodeJS中操作数据库的对象模型工具
  • Mongoose使用面向对象的思想对原生的mongoDB命令进行了封装
    http://www.mongoosejs.net/
    https://mongoosejs.com/

2.Mongoose和MongoDB映射关系

在Mongoose中JS中的一个模型就对应数据库中的一个集合
在Mongoose中JS中的一个对象就对应集合中的一个文档
在Mongoose中JS中的一个对象的属性就对应文档的一个字段

3.使用:

3.1 初始化一个nodeJS项目:

文件位置的控制台中输入:npm init --y
创建项目,生成一个package.json文件

3.2 安装mongoose

文件位置的控制台中输入:npm install mongoose

3.3 使用mongoose
// 1. 在要使用的.js文件中导入mongoose
const mongoose = require('mongoose')

// 2. js文件中链接数据库
mongoose.connect('mongodb://127.0.0.1:27017/mongooseTest') // 新建一个mongooseTest数据库

// 3. 监听链接成功还是失败
let db = mongoose.connection;
db.on('error', (err)=>{ // 链接失败
    console.log(err, "链接失败");
});
db.once('open', function() { // 链接成功
    // we're connected!
    console.log("链接成功");
});
db.once('open', function() { // 断开链接
    // we're connected!
    console.log("断开链接");
});

4.基本操作

1).定义集合中存储数据规则

cosnt 规则名称 = new Schema({
    name: String,
    age: Number
});

2).利用规则创建一个集合【模型】

let User = mongoose.model('User', 规则名称);

3).创建一个文档

let u = new User({
    name:'zs',
    age:18
});

4).操作集合和文档
只要是通过Mongoose定义的模型, 那么Mongoose就会自动给这个模型添加很多操作集合和文档的方法
以后我们就可以直接通过模型操作集合, 通过模型创建出来的对象操作数据。

5.完整js代码

// 1.导入mongoose
const mongoose = require('mongoose')

/*
2.链接数据库
mongodb://MongoDB服务器IP地址:MongoDB服务器端口号/需要打开的数据库名称
* */
mongoose.connect('mongodb://127.0.0.1:27017/mongooseTest') // 新建一个mongooseTest数据库

// 3.监听打开成功还是失败
let db = mongoose.connection;
db.on('error', (err)=>{ // 链接失败
    console.log(err, "链接失败");
});
db.once('open', function() { // 链接成功
    // we're connected!
    console.log("链接成功");
});
db.once('open', function() { // 断开链接
    // we're connected!
    console.log("断开链接");
});

// 4.操作数据库
// 4.1 定义集合中存储数据规则
const userSchema = new mongoose.Schema({ // 说明集合中要存储的字段,字段类型
    name: String,
    age: Number
});

// 4.2 利用规则创建集合
// 注意点:只要创建好了模型(User)集合,那么以后就可以使用User来操作这个集合
// 注意点:mongoose会自动将我们制定的集合名称变为复数(users),数据库中的集合名称不是User而是users
let User = mongoose.model('User', userSchema);

// 4.3 利用集合创建文档
// 注意点:只要创建好了对象(u),那么以后就可以使用对象来操作文档
let u = new User({name: 'Ge', age: 13});

// 4.4 操作文档
u.save((err, product)=>{
    if (!err) { // 保存文档成功
        console.log('保存文档成功', product)
    }
})
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于基本的增删改查操作,使用mongoose可以按照以下步骤进行: 1. 定义数据模式Schema:在定义数据模式时使用mongoose.Schema来创建一个新的模式对象。可以通过指定字段名称和类型来定义模式的属性,例如: ```javascript const mongoose = require("mongoose"); const Schema = mongoose.Schema; const NewsSchema = new Schema({ name: {type: String}, age: {type: Number}, sex: {type: String, required: [true, '请选择性别']} }); ``` 2. 定义数据模型Model:通过mongoose.model来创建一个新的模型对象,参数1为模型的名称,参数2为使用的模式对象,参数3为集合名称。例如: ```javascript const UserModel = mongoose.model('User', NewsSchema, 'user'); ``` 3. 增加数据:使用模型对象的create方法来创建一个新的文档,并将其保存到数据库中。例如: ```javascript UserModel.create({name: 'John', age: 25, sex: 'Male'}, (err, doc) => { if(err) { console.log(err); } else { console.log(doc); } }); ``` 4. 查询数据:使用模型对象的find方法来查询符合条件的文档。例如: ```javascript UserModel.find({name: 'John'}, (err, docs) => { if(err) { console.log(err); } else { console.log(docs); } }); ``` 5. 更新数据:使用模型对象的updateOne或updateMany方法来更新符合条件的文档。例如: ```javascript UserModel.updateOne({name: 'John'}, {age: 30}, (err, result) => { if (err) { console.log(err); } else { console.log(result); } }); ``` 6. 删除数据:使用模型对象的deleteOne或deleteMany方法来删除符合条件的文档。例如: ```javascript UserModel.deleteOne({name: 'John'}, (err) => { if (err) { console.log(err); } else { console.log('删除成功'); } }); ``` 以上是使用mongoose进行基本增删改查的步骤。可以根据具体的需求和条件进行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [mongoose实现增删改查](https://blog.csdn.net/qq_44747461/article/details/121178662)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [eggjs实战(5)——eggjs+mongoose(egg-mongoose)增删改查技巧](https://blog.csdn.net/zjsj_lize/article/details/120938407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值