作者:Bd专业8楼nv | 来源:互联网 | 2023-09-17 19:00
文章目录
- 准备工作
- 数据库的相关概念
- 与数据库进行连接
- 创建集合
- 创建文档(具体数据)
- 查询文档(数据)
- 删除文档(数据)
- 更新文档
- 啦啦啦
准备工作
首先需要确保已经启动了 MongoDB,如果没有启动以管理员身份
运行cmd
net start mongoDB
其次需要安装第三方模块
npm install mongoose
并将其引入
const mOngoose= require(‘mongoose’);
数据库的相关概念
术语 |
解释 |
---|
database |
数据库(数据仓库) |
collection |
集合,一组数据的集合,可以理解为js里的数组 |
document |
文档,一条具体的数据,可以理解为js的里对象 |
field |
字段,文档中的属性名称,可以理解为js里的对象属性 |
在一个数据库软件中可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,在每一个数据集合中也可以包含多条文档(具体的数据),而每个集合里面又可以包含多个字段
从下面的图片具体来看
- 数据仓库有:admin、config、local(这三个是软件自带的)、playground(自己创建的)
- 集合(以playground为栗):posts、students、tests、users
- 文档:下图中右侧有3条文档
- 字段:_id(软甲自己创建的,是这条数据的唯一标识)、name、age、email
与数据库进行连接
mongose.connect('mongodb://localhost/playground', {
useNewUrlParser: true
})
.then(() => console.log('数据库连接成功'))
.catch(err => {
console.log(err);
console.log('数据库连接失败');
});
当你正在使用一个数据库时,如果该数据库不存在的话,那么MongoDB将会自动创建该数据库。另外如果只创建了数据库而没有给数据库里面添加数据的话,那么你刷新了MongoDB Compass
也不会看到这个数据库,因为里面没有集合(也就是没有数据)
创建集合
创建集合可以分为两步:
1.对集合设定相应的规则,也就是你创建的这条数据(文档)里面包含哪些内容(对象),这些内容有什么要求
2.根据规则创建集合
let userSchema = new mongose.Schema({
name: String,
age: Number,
hobbies: [String]
});
let User = mongose.model('User', userSchema);
创建文档(具体数据)
创建文档有两种方法
let data = {
name: '张三',
age: 19,
hobbies: ['跑步', '睡觉']
};
let person1 = new User(data);
person1.save();
User.create(data, (err, doc) => {
if(!err) {
console.log(doc);
} else {
console.log(err);
}
});
User.create(data)
.then(doc => {
console.log(doc);
})
.catch(err => {
console.log(err);
});
查询文档(数据)
User.find({name: '张三'}).then(result => console.log(result));
User.find({age: {$gt: 20, $lt: 40}}).then(result => console.log(result));
User.findOne({name: '张三'}).then(result => console.log(result));
User.find().select('name email -_id').then(result => console.log(result));
User.find().sort('age').then(result => console.log(result));
User.find().sort('-age').then(result => console.log(result));
User.find().skip(2).limit(5).then(result => console.log(result));
删除文档(数据)
User.findOneAndDelete({name: '张三'}).then(result => console.log(result));
User.deleteMany({}).then(result => console.log(result));
更新文档
User.updateOne({name: '李四'}, {name: '李狗蛋' ,age: 28, }).then(result => console.log(result));
User.updateMany({}, {age: 66}).then(result => console.log(result));
啦啦啦
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/playground')
.then(() => console.log('数据库连接成功'))
.catch(err => console.log('数据库连接失败'))
let bookSchema = mongoose.Schema({
name: {
type: String,
required: [true, '请输入书的名称'],
minlength: [2, '名称长度不能少于2个字'],
maxlength: [20, '文章长度不能大于20个字'],
trim: true
},
author: {
type: String,
validate: {
validator: value => {
return value && value.length > 4
},
message: '不符合规定'
}
},
category: {
type: String,
enum: {
values: ['html', 'css', 'js'],
message: '没有该类别'
}
},
num: {
type: Number,
min: [0, '不能少于0本'],
max: [100, '不能多于100本']
},
publishDate: {
type: Date,
default: Date.now
}
});
let Book = mongoose.model('Book', bookSchema);
Book.create({name: ' Javascript程序设计 ', author: 'he', category: 'jss', num: 8,})
.then(doc => console.log(doc))
.catch(error => {
const err = error.errors;
for (var attr in err) {
console.log(err[attr]['message']);
}
})