目录
  1. 1. Mongoose
    1. 1.1. MongoDB数据库的基本概念
    2. 1.2. 安装
    3. 1.3. 快速使用:
    4. 1.4. 官方指南:
    5. 1.5. 新增数据
    6. 1.6. 查询数据
    7. 1.7. 删除数据
    8. 1.8. 更新数据
MongoDB之Mongoose的使用

Mongoose

MongoDB数据库的基本概念

  • 数据库
  • 集合
    • 一个数据库中可以有多个集合(表)
  • 文档
    • 一个集合中可以有多个文档(表记录)
    • 文档结构很灵活,没有任何限制
  • MongoDB非常灵活,不需要像MySQL一样先创建数据库、 表、设计表结构
    • 在这里只需要:当你需要插入数据的时候,只需要指定往哪个数据库的哪个集合操作就可以了
    • 一切都由MongoDB来帮你自动完成建库建表这件事儿
{
qq: { // 对应数据库
users: [ //集合,对应mysql中的表
{name: '张三', age: 15},
{name: '张三', age: 15},
{name: '张三', age: 15},
{name: '张三', age: 15},
{name: '张三', age: 15},
...
{},
{}
],
products: [

]
},
taobao: {

},
baidu: {

}
}

安装

npm i mongoose

快速使用:

const mongoose = require('mongoose');
// 连接数据库,没有会自动创建
mongoose.connect('mongodb://localhost/test');

// 创建一个模型--设计数据库
// MongoDB是动态的,非常灵活,只需在代码中设计数据库就可以
const Cat = mongoose.model('Cat', { name: String });
// 实例化一个 Cat
const kitty = new Cat({ name: 'Zildjian' });

// 持久化保存一个 kitty 实例
kitty.save(function(err){
if(err)
console.log(err)
else
console.log('meow')
})

官方指南:

var mongoose = require('mongoose')
// 获取结构对象
var Schema = mongoose.Schema
// 1.连接数据库,没有会自动创建
mongoose.connect('mongodb://localhost/test');

// 2.设计集合结构(表结构)
var userSchema = new Schema({
username: {
type: String,
required: true //必须有
},
password: {
type: String,
required: true
},
email: {
type: String
}
})

// 3.将文档结构发布为模型
// mongoose. model方法就是用来将一个架构发布为model
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
//mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 第一个参数:架构Schema
// 返回值:模型构造函数

// 4.使用模型构造函数操作users集合
var User = mongoose.model('User', userSchema)

新增数据

var admin = new User({
username: 'admin',
password: '123',
email: 'admin@116.com'
})

admin.save(function(err, ret){
if(err)
console.log('保存失败')
else{
console.log('保存成功')
console.log(ret)
}
})

查询数据

查询所有:

// 查询所有
admin.find(function(err, ret){
if(err)
console.log('查询失败')
else{
console.log(ret)
}
})

条件查询所有:

// 按条件查询
admin.find({
username: 'admin' // 条件查询 username = admin 的
}, function(err, ret){
if(err)
console.log('查询失败')
else{
console.log(ret)
}
})

条件查询单个:

// 按条件查询第一个
admin.findOne({
username: 'zs' // 返回所有满足 username = zs 的,取第一个
}, function(err, ret){
if(err)
console.log('查询失败')
else{
console.log(ret)
}
})

// id 查询
admin.findById({
id: id
},function(err, ret){
if(err)
console.log('查询失败')
else{
console.log(ret)
})

删除数据

admin.remove({
username: 'admin' // 条件删除 username = admin 的
}, function(err, ret){
if(err)
console.log('删除失败')
else{
console.log('删除成功')
}
})

更新数据

根据条件更新所有:

Model.update(conditions, doc, [options],[callback])

根据指定条件更新一个:

Model.findOneAndUpdate([conditions], [update], [options], [callback])

根据id更新一个

admin.findByIdAndUpdate('5a001b23d219eb00c8581184', {	// 将指定id对象的password更改为 '456
password: '456'
}, function(err, ret){
if(err)
console.log('更新失败')
else{
console.log('更新成功')
}
})
文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-06/09/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/NodeJS/Mongoose%E7%9A%84%E4%BD%BF%E7%94%A8/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论