数据库相关概念
database:数据库,MongoDB数据库可以建立多个数据库。
collection:集合,一组数据的集合,可以理解为javascript中的数组。
document:文档,一条具体的数据, 可以理解为javascript 中的对象。
filed:字段,文档中的属性名称,可以理解为javascript中对象的属性。
Mongoose第三方包
使用Node.js操作MongoDB数据库需要依赖Node.js第三方包Mongoose。
开发流程
1、创建项目文件夹
2、在当前文件夹下打开cmd
3、下载第三方包
npm install mongoose
4、开启MongoDB服务(默认安装之后是开启的)
5、数据库连接
使用mongoose提供的content方法连接数据库。有两个参数,第一个参数为url(因为使用的是MongoDB数据库所以是mongodb://开头,在本地存储的数据库所以是localhost/,后面是数据库的名称);第二个参数为对象(通过将useNewUrlParser设置为true来避免“不建议使用当前URL字符串解析器”警告。将选项{useUnifiedTopology:true}传递给mongoclient构造函数。来避免当前服务器发现和监视引擎已弃用)。返回一个promise对象,可以调用then和catch方法。
mongoose.connect('mongodb://localhost/playground', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log('数据库连接成功');
}).catch(
err => {
console.log(err, '数据库连接失败');
}
)
6、创建集合
对集合设置规则
在mongoose下面有一个Schema构造函数,创建规则就是创建Schema构造函数的实例对象。传递一个对象,对象的属性是集合中的文档可以拥有的属性,属性的值是当前字段的类型。
const courseSchema = new mongoose.Schema({
name: String,
author: String,
isPublished: Boolean
})
创建集合
使用mongoose.model创建集合,有两个参数,第一个是集合名称,第二个是集合规则。
const Course = mongoose.model('Course', courseSchema) //course
7、使用node xxx.js 运行
node index.js
MongoDB增删改查操作
1-1、向集合中插入文档
创建文档
const course = new Course({
name: 'node.js 基础',
author: 'ABC',
isPublished: true
})
调用save方法插入数据
course.save();
1-2、向集合中插入文档的另一种方式
Course.create({
name: 'Node.js',
author: 'ABC',
isPublished: false
}).then(result => {
console.log(result);
})
2-1、通过findOneAndDeleate删除单个 result返回删除的文档
Course.findOneAndDelete({
_id: '60c32cab11a0b64b00aa8f74'
}).then(result => console.log(result))
2-2、通过deleteMany删除多个
Course.deleteMany({
age: 18
}).then(result => console.log(result))
3-1、通过updateOne更新单个 有两个参数,第一个查询条件,第二个要更改的值
Course.updateOne({
name: 'lisi'
}, {
name: 'ligoudan'
}).then(result => console.log(result))
3-2、通过updateMany更新多个
Course.updateMany({
name: 'lisi'
}, {
name: 'ligoudan'
}).then(result => console.log(result))
4-1、通过_id字段查找文档
Course.find({_id: '60c3302e7b1d113a3cf7eaf5'}).then(result => console.log(result))
4-2、findone方法返回一条文档 默认返回当前集合中的第一条文档
Course.findOne({name: 'ABC'}).then(result => console.log(result))
4-3、匹配大于小于 大于20小于50
Course.find({ age: { $gt: 20, $lt: 50 }}).then(result => console.log(result))
4-4、匹配包含
Course.find({
hobbies: {
$in: ['敲代码']
}
}).then(result => console.log(result))
4-5、选择要查询的字段
Course.find().select('name email').then(result => console.log(result))
4-6、根据年龄字段进行升序排列
Course.find().sort('age').then(result => console.log(result))
4-7、根据年龄字段进行降序排列
Course.find().sort('-age').then(result => console.log(result))
4-8、skip跳过多少条数据,limit限制查询数据
Course.find().skip(2).limit(2).then(result => console.log(result))