Mongoose
- 官方-中文:https://mongoosejs.com/
- 官方指南:http://www.mongoosejs.net/docs/guide.html
- 官方API文档:http://www.mongoosejs.net/docs/api.html
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: '[email protected]'
})
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('更新成功')
}
})