MongoDB增删改查操作
程序员文章站
2022-07-10 10:38:40
...
1. 创建集合
- 创建集合分两步, 一是对集合设定规则, 二是创建集合, 创建
mongoose.Schema
构造函数的实例即可创建集合。
const mongoose = require('mongoose')
// 数据库连接
mongoose.connect('mongodb://localhost/playground')
.then(() => console.log('数据库连接成功'))
.catch(err => console.log(err, '数据库连接失败'))
// 创建集合规则
const courseSchema = new mongoose.Schema({
name: String,
author: String,
isPublished: Boolean
})
// 使用规则创建集合
// 1. 集合名称
// 2. 集合规则
const Course = mongoose.model('Course', courseSchema) // 集合实际的名字是courses
- 查看数据库的相关数据, 可下载MongoDB Compass配合使用
- 下载地址: https://www.mongodb.com/products/compass
2. 创建文档
2.1 创建文档第一中方式
- 创建文档实际上就是向集合中插入数据
- 分为两步:
- 创建集合实例.
- 调用实例对象下面的
save方法
将数据保存到数据中.
// 和上面的代码一起运行
// 创建文档
const course = new Course({
name: 'node.js',
author: 'zhangsan',
isPublished: true
})
// 将文档插入到数据库中
course.save()
结果:
2.2 创建文档的第二种方式
// 回调函数
Course.create(
{
name: 'JavaScript',
author: 'lisi',
isPublished: true
},
(err, result) => {
console.log(err)
console.log(result)
}
)
// promise对象
Course.create({name: 'Vue.js', author: 'lisi', isPublished: true})
.then(result => console.log(result))
3. MongoDB数据库导入数据
- 在插入数据之前要先配置环境变量
- 找到MongoDB的安装目录下的bin, 把bin配置到系统环境变量path中
mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据文件
4. 查询文档
4.1. 先创建文档
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
.then(() => console.log('数据库连接成功'))
.catch(err => console.log(err, '数据库连接成功'))
const userShema = new mongoose.Schema({
name: String,
age: Number,
email: String,
password: String,
hobbies: [String]
})
const User = mongoose.model('User', userShema)
// 创建多条文档
// User.create({
// name: '血衣侯',
// age: 25,
// email: 'aaa@qq.com',
// password: 123456,
// hobbies: ['舞剑', '练剑']
// })
// .then(result => console.log(result))
User.create({
// name: 'zhangsan',
// age: 35,
// email: 'aaa@qq.com',
// password: 123456,
// hobbies: ['JavaScript', 'nodejs', 'Vue.js']
// })
// .then(result => console.log(result))
User.create({
name: '卫庄',
age: 18,
email: 'aaa@qq.com',
password: 123456,
hobbies: ['舞剑', '练剑']
})
.then(result => console.log(result) )
4.2. 按条件查询文档
// 查询用户集合中的所有文档
User.find().then(result => console.log(result))
// 通过_id字段查找
User.find({_id: '5f1134b28ecdf026285b4d9b'}).then(result => console.log(result))
// 返回一条文档, 默认返回当前集合中的第一条文档
User.findOne().then(result => console.log(result))
// 根据条件查找文档
User.findOne({name: '卫庄'}).then(result => console.log(result))
4.3. 匹配大于 小于
// 查询用户集合中年龄字段大于18并且小于25的文档
// $gt(大于) $lt(小于)
User.find({age: {$gt: 18, $lt: 25}}).then(result => console.log(result))
4.4 匹配包含
User.find({hobbies: {$in: ['nodejs']}}).then(result => console.log(result))
4.5. 选择要查询的字段
User.find().select('name email -_id').then(result => console.log(result))
4.6. 排序
// 将数据按照年龄进行升序排列
User.find().sort('age').then(reslut => console.log(reslut))
// 将数据按照年龄进行降序排列
User.find().sort('-age').then(reslut => console.log(reslut))
4.7. skip 跳过多少条数据 limit限制查询数量
User.find().skip(2).limit(2).then(result => console.log(result))
5. 删除文档
5.1 删除单个
// 查找到一条文档并且删除
// 返回删除的文档
// 如何查询条件匹配了多个文档 那么将会删除第一个匹配的文档
User.findOneAndDelete({_id: '5f1134b28ecdf026285b4d9b'}).then(result => console.log(result))
5.2 删除多个文档
User.deleteMany({}).then(result => console.log(result))
结果:
ok为1代表删除成功, n为删除的条数
6. 更新文档
6.1 更新单个
// 如果匹配多条文档, 只更新第一个匹配的文档
Course.updateOne({name: '卫庄'}, {name: '血衣侯'}).then(result => console.log(result))
6.2 更新多个文档
Course.updateMany({}, {name: 'zhangsan'}).then(result => console.log(result))
上一篇: 跨域访问
下一篇: Spring 解决循环依赖