MongoDB 数据库罕用操作
MongoDB数据库中罕用的操作包含:
- 插入数据:应用insertOne()或insertMany()办法向汇合中插入数据。
- 查问数据:应用find()办法查问满足条件的数据。
- 更新数据:应用updateOne()或updateMany()办法更新满足条件的数据。
- 删除数据:应用deleteOne()或deleteMany()办法删除满足条件的数据。
- 索引创立、删除、优化:应用createIndex()、dropIndex()等办法实现汇合的索引操作,晋升查问效率。
- 聚合查问:应用aggregate()办法进行聚合查问,实现数据筛选、分组、排序、统计等简单查问操作。
- 分页查问:通过设置skip()和limit()办法实现分页查问操作。
- 数据备份和复原:应用mongodump和mongorestore等命令行工具进行数据库的备份和复原操作。
- 数据库连贯、断开:应用mongoshell等客户端工具启动MongoDB服务器并连贯到数据库,或应用ctrl+c命令敞开数据库连贯。
以上是MongoDB数据库中罕用的操作,利用宽泛,须要把握根本的操作语法和应用办法。
更多精彩内容,请微信搜寻“前端爱好者
“, 戳我 查看 。
MongoDB的增删改查
MongoDB是一个NoSQL型数据库,它反对相似于关系型数据库中的增删改查操作。
本文次要介绍 MongoDB的增删改查
操作 。
减少数据
insert()
MongoDB中的数据集称为汇合(collection),你能够应用 insert() 办法向汇合中增加一条或多条文档。
例如,咱们要向名为students的汇合中增加一条学生信息,能够应用以下代码:
db.students.insert({ name: "张三", age: 20, gender: "男", address: "北京市海淀区"})
insertOne() 、 insertMany()
应用 insertOne() 或者 insertMany() 办法向汇合中增加数据。
其中,
- insertOne() 用于增加单条数据,
- insertMany()用于增加多条数据。
示例:向名为users的汇合中增加一条数据。
db.users.insertOne({ name: "张三", age: 28, sex: "男", phone: "13888888888"})
MongoDB insertMany()
insertMany()是MongoDB中一个用于向汇合中插入多条文档的办法.
其语法格局为:
db.collection.insertMany( [ <document 1> , <document 2>, ..., <document n> ], { writeConcern: <document> })
其中,db.collection示意要插入的汇合名称,[ <document 1> , <document 2>, ..., <document n> ]
示意要插入的一组文档(以数组模式),{ writeConcern: <document> }
是可选参数,示意写入数据时的安全级别,用于控制数据复制和确认操作。
应用insertMany()办法能够疾速、不便地向MongoDB数据库中插入多条数据,实用于数据量较大的状况。
例如,咱们能够应用以下代码向名为users的汇合中插入3条数据:
db.users.insertMany([ { name: "Lucy", age: 22, sex: "female" }, { name: "Tom", age: 25, sex: "male" }, { name: "John", age: 30, sex: "male" }])
在执行上述代码后,就会向名为users的汇合中插入3条文档数据。如果只想插入单条文档数据,能够应用insertOne()办法。
查问数据
MongoDB中查问数据能够应用 find() 办法。
例如,咱们要在students汇合中查问所有的学生信息,能够应用以下代码:
db.students.find()
在理论开发中,咱们通常会加上查问条件。
例如查问年龄为20的学生信息:
db.students.find({age: 20})
更新数据
update()
更新数据应用 update() 办法。
例如,咱们当初想要将姓名为“张三”的学生信息的地址更改为“上海市浦东新区”,能够应用以下代码:
db.students.update( {name: "张三"}, {$set: {address: "上海市浦东新区"}})
updateOne()、updateMany()
应用 updateOne() 或者 updateMany() 办法批改汇合中的数据。
其中,updateOne()用于批改单条数据,updateMany()用于批改多条数据。
示例:将名为users的汇合中age属性等于28的数据的name属性改为李四。
db.users.updateOne({ age: 28},{ $set: { name: "李四" }})
MongoDB updateMany()
updateMany()是MongoDB中一个用于更新汇合中多条文档的办法,
其语法格局为:
db.collection.updateMany( <filter>, <update>, { upsert: <boolean> writeConcern: <document> })
其中,db.collection示意要更新的汇合名称,<filter>
示意查问要更新的条件,是一个文档类型的参数,<update>
示意要更新的字段及其值,是一个文档类型的参数。
另外,upsert是一个可选参数,如果设为true,则会在汇合中找不到对应记录时插入一条新的记录;writeConcern也是一个可选参数,示意写入数据时的安全级别,用于控制数据复制和确认操作。
应用updateMany()办法能够疾速、不便地批量更新MongoDB数据库中的数据。
例如,咱们能够应用以下代码将名为users的汇合中age大于等于25的记录中的sex字段值为“male”更新为“man”:
db.users.updateMany( { age: { $gte: 25 } }, { $set: { sex: "man" } });
这条代码执行后,会将名为users的汇合中age大于等于25的所有文档的sex字段值更新为“man”。
删除数据
remove()
删除数据应用 remove() 办法。
例如,咱们想要删除名字为“张三”的学生信息,能够应用以下代码:
db.students.remove({name: "张三"})
deleteOne()、deleteMany()
应用 deleteOne() 或者 deleteMany() 办法从汇合中删除数据。
其中,deleteOne()用于删除单条数据,deleteMany()用于删除多条数据。
db.users.deleteOne({ name: "张三"})
示例:删除名为users的汇合中name属性等于“张三”的数据。
deleteMany()
deleteMany()是MongoDB中一个用于删除汇合中多条文档的办法,
其语法格局如下:
db.collection.deleteMany( <filter>, { writeConcern: <document> })
其中,db.collection示意要删除数据的汇合名称,<filter>
示意要删除的条件,是一个文档类型的参数。
writeConcern是一个可选参数,示意写入数据时的安全级别,用于控制数据复制和确认操作。
应用deleteMany()办法能够疾速、不便地批量删除MongoDB数据库中的数据。
例如,咱们能够应用以下代码将名为users的汇合中age大于等于25的记录删除:
db.users.deleteMany({ age: { $gte: 25 } });
这条代码执行后,会将名为users的汇合中age大于等于25的所有文档删除。
用户模块的增删改查
增加零碎用户
router.post('/add', async (ctx) => { let { username, pwd } = ctx.request.body await Users.create({ username, pwd }).then(rel => { if (rel) { ctx.body = { code: 200, msg: '增加胜利', data: rel } } else { ctx.body = { code: 300, msg: '增加失败' } } }).catch(err => { ctx.body = { code: 400, msg: '增加时出现异常' } console.error(err) })})
批改零碎用户
router.post('/update', async (ctx) => { let params = ctx.request.body await Users.updateOne( { _id: params._id }, { username: params.username, pwd: params.pwd } ).then(rel => { ctx.body = { reslut: rel } }).catch(err => { ctx.body = { code: 400, msg: '批改时出现异常' } console.error(err) })})
谬误展现
删除零碎用户
router.post('/del', async (ctx) => { let { _id } = ctx.request.body await Users.findOneAndDelete({ _id }).then(rel => { ctx.body = { reslut: rel } }).catch(err => { ctx.body = { code: 400, msg: '删除时出现异常' } console.error(err) })})
查问零碎用户
查问所有零碎用户
router.get('/find', async (ctx) => { await Users.find().then(rel => { ctx.body = { result: rel } }).catch(err => { ctx.body = { code: 400, msg: '查问时出现异常' } console.error(err) })})
查问单个零碎用户
router.get('/find/:id', async (ctx) => { await Users.findOne({ _id: ctx.params.id }).then(rel => { ctx.body = { result: rel } }).catch(err => { ctx.body = { code: 400, msg: '查问时出现异常' } console.error(err) })})module.exports = router
总结
- 插入: insertOne 或者 insertMany; 新增:create
- 查问: find 或者 findOne
- 更新: updateOne、updateMany、findOneAndUpdate
- 删除: deleteOne、deleteMany、findOneAndDelete
每日一课: ES6 新增属性 第一局部
ES6(ECMAScript 2015)是 JavaScript 的一个重要的更新版本,新增了许多新性能和个性。
在 ES6 中,有一些新增的属性,包含如下:
let 和 const 申明
ES6 新减少了 let 和 const 关键字,用于申明变量和常量。
let 申明的变量的作用域为块级作用域,而且不反对变量晋升。
const 申明的常量不能被从新赋值,然而申明的对象能够批改其外部属性。
let a = 1;const b = 2;
箭头函数
ES6 引入了箭头函数,能够更简洁地定义函数。
它的语法非常简单,应用 (参数) => {函数体} 的模式定义,能够省略掉 function 关键字和大括号。
// 传统函数定义function add(a, b) { return a + b;}// 箭头函数定义var add = (a, b) => a + b;
模板字符串
ES6 中新增了模板字符串,容许在字符串中插入变量和表达式,简化了字符串的拼接操作。
应用反引号 (`) 来定义模板字符串,应用 ${expression} 插入变量或表达式。
const name = 'Tom';const age = 20;console.log(`My name is ${name}, and I am ${age} years old.`);
解构赋值
解构赋值容许从数组或对象中提取值,并赋值给变量。
在 ES6 中,能够应用解构赋值来疾速地提取数据。
// 解构赋值数组const [a, b] = [1, 2];// 解构赋值对象const { name, age } = { name: 'Tom', age: 20 };
对象的扩大
在 ES6 中,对象的定义和应用更加便捷,新增了 对象字面量 的简洁语法,反对计算属性名称,新增了 Object.assign 办法等。
// 对象字面量的简写模式const name = 'Tom';const age = 20;const user = { name, age };// 应用计算属性名称const propName = 'age';const user = { name: 'Tom', [propName]: 20 };// Object.assign 办法const obj1 = { a: 1, b: 2 };const obj2 = { b: 3, c: 4 };const obj = Object.assign({}, obj1, obj2);