min: 数字,创建一个验证器,验证值是否大于等于给定的最小值 max: 数字,创建一个验证器,验证值是否小于等于给定的最大的值 日期 min: Date max: Date 现在已经介绍完Schematype...也称为查询“投影”),必须同时指定包含或同时指定排除,不能混合指定,_id除外。...min只有当指定值小于当前字段值时更新max只有当指定值大于当前字段值时更新inc将字段值增加指定数量,指定数量可以是负数,代表减少。...updateMany() Model.updateMany(filter, update, options, callback) 更新符合查询条件的所有文档,相当于 Model.update(filter...ref 选项告诉 Mongoose 在使用 populate() 填充的时候使用哪个 Model。
因为update本身的意义不够清楚,所以3.0以后才出现了updateMany和updateOne两个替代方法。...这个方法没多少要说的,唯一要注意的就是,如果用update方法的话,不要忘记操作符($set, $inc等等),不然…… updateMany和updateOne则没有这个问题,缺了操作符会直接报错。...首先参数不一样: findAndModify update 请阅读文档不多赘述。 其次功能不一样, update只是更新操作,而findAndModify可以在找到结果后选择执行更新还是删除操作。...如果没有这个操作,那就必须先find再update或者先update再find,无论怎么做,都不能保证中间不被其他操作捷足先登。...因此findAndModify在某些场景下是必要的,比如使用$inc生成递增序列(注意生成递增序列做ID不是个好想法,我在这个问题中做过解释) 因为findAndModify只针对单个文档,那么如果条件能找到多个文档怎么办
删除多条文档 User.deleteMany({}).then(result => console.log(result)) 更新修改文档 updateOne 单个 如果更新条件匹配多个默认只更新第一个 updateMany...User.updateOne({name: '李四'}, {age: 120, name: '李狗蛋'}).then(result => console.log(result)) // 找到要删除的文档并且删除 User.updateMany...({ title: { type: String, // 必选字段 required: [true, '请传入文章标题'], // 字符串的最小长度 minlength: [2, '文章长度不能小于...2'], // // 字符串的最大长度 maxlength: [5, '文章长度最大不能超过5'], // // 去除字符串两边的空格 trim: true }, age: { type:...Number, // // 数字的最小范围 min: 18, // // 数字的最大范围 max: 100 }, publishDate: { type: Date, // 默认值
基础使用 基础使用 需要安装node原生依赖:https://github.com/mongodb/node-mongodb-native npm i mongodb -S 新建一个 hello.js...toArray(); console.log("天安门附近地铁站", r); 更新操作符:可以修改数据库数据或添加附加数据 // 字段相关:$set,$unset,$setOnInsert,$rename,$inc...,$[]用于修改 fruitsColl.updateMany({ name: "芒果", tags: "甜" }, { $set: {"tags.$": "香甜"} }) 聚合操作符:使用aggregate...而mongoose就是i 一个良好的工具。 mongoose是一个优雅的nodejs对象文档模型。它是由关系型数据库的思想去应用到非关系型数据库。...文档地址:https://mongoosejs.com/docs/guide.html 安装: npm install mongoose -S 增删改查使用实例 const mongoose = require
= mongoose.model ('Course', courseSchema); //第一个参数是集合名称,第二个是集合规则。...,第二个参数表示自定义错误提示信息 const postSchema = new mongoose.Schema({ title: { type: String, ...必传字段,不传就会报错 required: [true, '请传入文章标题'], minlength: 2, maxlength: [6, '标题长度不能大于...使用id对集合进行关联 使用populate方法进行关联集合查询 ?...type: String }, // 1、使用ID将文章集合和作者集合进行关联 author: { type: mongoose.Schema.Types.ObjectId
准备工作 let mongoose = require("mongoose"); let connection = require("....条 查询第2页 1 2 3 4 5 6 7 8 9 10 sort 指定排序的字段和升序还是降序 1,-1 skip 指定跳过几条,忽略几条 limit 限定返回的最大条数 更新 update有两个参数...,第一个参数是条件,第二个参数是更新后的值 (async function(){ let result = await UserModel.update({name:"apple"},{name...orange"}); console.log(result); })() image.png n是匹配的条件 nModified表示实际发生更新操作的条数 更新还涉及到updateOne和updateMany...updateMany同理如果找到多条记录,则更新所有匹配的记录 删除 删除是艰巨的任务,毕竟删库跑路一直都备受关注,所以在使用的时候一定要小心☠。 默认的情况下remove删除所有匹配的记录。
= mongoose.model ('Course', courseSchema); //第一个参数是集合名称,第二个是集合规则。...,第二个参数表示自定义错误提示信息 const postSchema = new mongoose.Schema({ title: { type: String,...必传字段,不传就会报错 required: [true, '请传入文章标题'], minlength: 2, maxlength: [6, '标题长度不能大于...使用id对集合进行关联 使用populate方法进行关联集合查询 // 关联集合 const mongoose = require('mongoose'); // 连接数据库 mongoose.connect...type: String }, // 1、使用ID将文章集合和作者集合进行关联 author: { type: mongoose.Schema.Types.ObjectId
1.2 数据库分类 数据库主要分成两种: 关系型数据库 • MySQL、Oracle、DB2、SQL Server …… 关系数据库中全都是表 非关系型数据库 • MongoDB、Redis...删除数据是永久的,不能撤销。...update() 的第三个参数,用来指定是否使用 upsert,默认为 false。 update() 的第四个参数,用来指定是否同时修改多个文档,默认为 false。 ...4.4 通过 Mongoose 连接 MongoDB 1、使用 Mongoose 必须先安装 mongoose 包 npm i mongoose --save 或者 npm install mongoose...转换为普通的 js 对象以后,所有的 Document 对象的方法或属性都不能使用了。
在实际开发过程中发现,考试系统各个表(集合)都是需要关联,mongodb这种非关系型数据库,做起来反而麻烦了不少。在此将一些数据库增删改查的方法回顾一下。...初始化一条数据 如果对mongodb,mongoose没有基础的了解,建议看一看mongoose深入浅出 ,mongoose基础操作 // controllers/student.js const...userName =req.session.userName; let name = req.param('name'); // 通过req.param()取到的值都是字符串,而limit()需要一个数字作为参数...userName =req.session.userName; let name = req.param('name'); // 通过req.param()取到的值都是字符串,而limit()需要一个数字作为参数...console.log(req.session.userName); let name = req.param('name'), // 通过req.param()取到的值都是字符串,而limit()需要一个数字作为参数
更新文档在MongoDB中,我们可以使用updateOne()和updateMany()方法来更新文档。updateOne()updateOne()方法用于更新集合中匹配条件的第一个文档。...该方法接受两个参数:一个JSON对象,表示要更新的条件;以及一个JSON对象,表示要更新的值。如果省略第二个参数,则更新操作将不会进行任何更改。...updateMany()updateMany()方法用于更新集合中匹配条件的所有文档。该方法接受两个参数:一个JSON对象,表示要更新的条件;以及一个JSON对象,表示要更新的值。...以下是使用updateMany()方法更新文档的示例:db.collection('users').updateMany( { age: { $gte: 30 } }, { $inc: { age:...$inc是MongoDB中的一个操作符,用于将字段的值增加指定的数量。
db.section.find({$or:[{wages:{$lt:10000}} , {wages:{$gt:25000}}]}); //29.为所有薪资低于10000的员工增加工资1000元 db.section.updateMany...({wages:{$lte:10000}} , {$inc:{wages:1000}}); db.section.find(); //30.根据工资升序查询 db.section.find().sort...,相当于MongoDB数据库中的集合collection + Document: Document表示集合中的具体文档 mongoose使用步骤 1.下载安装Mongoose: npm i mongoose...("open",function(){}); mongoose.connection.once("close",function(){}); Node.js使用mongoose链接数据库示例 // 1...,第二个参数是查询到的数据 /* personModel.find({}, (err, docs) => { if (!
# 存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型) 3.MongoDB 语言 # 一般 cmd 的操作 # use db # 使用...db数据库 # show dbs # 查看当前服务器中写在磁盘上的数据库 # show tables # 查看数据库中的collection # db # 查看当前使用的数据库...age 在 11,22,44 里面的 # db.user_info.find({age:{$in: [11,22,44]}}) # all # 查询条件是 field 的子集 # 查询 1,2,3 三个数字同时是哪些人喜欢的数字...zhangsan' 的 {hobby:'girl'} 删除掉 # db.user_info.updateOne({name:'zhangsan'},{$unset:{hobby:'girl'}}) 5.3 $inc...# field 累加 # 每执行一次,age 字段就 +1 # db.user_info.updateOne({name:'zhangsan'},{$inc:{age:1}}) # 全部累加 # db.user_info.updateMany
59067b70856d5893a687655f"), "age" : 22, "name" : "chenjiabing", "sex" : "Man", "hobby" : "read" } multi 如果这个参数为...$inc修改器用来增加已有键的值,或者在键不存在时创建一个键$inc就是专门来增加(和减少)数字的。...name1>: , : , ... } } $rename操作符可以重命名字段名称,新的字段名称不能和文档中现有的字段名相同。...$ (query) 语法:{ ".$" : value } 当对数组字段进行更新时,且没有明确指定的元素在数组中的位置,我们使用定位操作符$标识一个元素,数字都是以0开始的。...下面我们将使用$push对该文档添加一条评论信息。
: Boolean }) // 使用规则创建集合 // 1.集合名称 // 2.集合规则 const Course = mongoose.model('Course', courseSchema);...更新多个文档 User.updateMany({}, {name: '张三丰'}).then(result => console.log(result)) 更新前 ? 更新后 ?...'], trim: [true, '去除标题两侧的空格'], minlength: 2, // 最小不能少于两个字符 maxlength: 5 // 最多不能超过...使用id对集合进行关联 使用populate方法进行关联集合查询 ?...使用ID将文章集合和作者集合进行关联 author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } })); //联合查询 Post.find
) 其他的如updateOne,updateMany等用法请参考:MongoDB 文档更新 MongoDB集合上所有的写操作特性 原子性操作(单个文档级别原子性操作...$inc修改器时,当字段不存在时,会自动创建该字段,如果存在,则在原有值的基础上进行增加或者减少 //$inc主要是用于专门进行数字的增加或减少,因此$inc只能用于整型,长整形,或者双精度浮点型的值...//$inc不支持字符串,数组以及其他非数字的值 //注,对于$inc的操作,$set也可以完成。...robinson.cheng"},{"_id":0,name:1,salary:1}).pretty() { "name" : "robinson.cheng", "salary" : 1500 } //下面使用非数字来实现...c、对于文档字段的增加,可以使用$set,$unset,$inc,$currentDate等方式 d、对于文档字段的删除,使用$unset方式来实现 e、upsert选项可以实现匹配的文档则更新
关于如何处理 node.js 服务连接 MongoDB,我查阅了大量中英文资料,发现并没有太适合我所期望的能力的方案,因此经过一番官方文档的研究,总结了以下的连接 MongoDB 的方法(使用目前 Node.js...见注释 C,这实际上是 mongoose 的默认设置,其连接数据库时的 config 参数 autoReconnect 默认为 true,其含义见文档: autoReconnect - The underlying...如果非高级用户,就不要去改变这个参数了。 见注释 D。对于 MongoDB 连接池的问题,建议是不要去手动处理。...当然,这个数字不能设置得过大,MongoDB 默认是一个连接启动一个线程来服务,连接太多线程数切换系统开销会很大。...因此,使用这套连接方式务必要注意数据库保持可连接状态。或者读者们如果有更好的解决方案,也希望能不吝赐教。 完。
数据库分为关系系数据库和非关系型数据库(nosql) 关系型数据库是由表和表之间的关系组成的,nosql是由集合组成的,集合下面是很多的文档。...非关系型数据库文件存储格式为BSON(一种JSON的扩展)。...我们的数据库中没有 你要切换的数据库, 那么即为创建 切换: 数据库已经存在, 我们从一个数据库切换到另一个数据库 show dbs 将我们本地的所有数据库列出来 db/db.getName() 查看当前使用的数据库...推荐 db.coll_name.insertOne({}) db.coll_name.insert({}) 查询 db.coll_name.find(arg1,arg2) 所有的 参数解释...({name:'lwj'},{$inc:{age:10}},false,true)//这个自然是全都修改了 作业: 笔记整理 练习 (将所有的命令走一遍) 预习mongoose
updateMany 更新多条记录: const updateUsers = await prisma.user.updateMany({ where: { email: {...,另外从 API 拓展上来说,虽然 Mongoose 设计得更简洁,但添加一些条件时拓展性会不足,导致结构不太稳定,不利于统一记忆。...// 数据,比如 create、update 时会用到 data: /** ... */, // 条件,大部分情况都可以用到 where: /** ... */, // 其它特殊参数...,或者 operater 特有的参数 }) 所以总的来说,Prisma 虽然没有对 ORM 做出革命性改变,但在微创新与 API 优化上都做得足够棒,github 更新也比较活跃,如果你决定使用 ORM...讨论地址是:精读《Prisma 的使用》· Issue #362 · dt-fe/weekly 版权声明:自由转载-非商用-非衍生-保持署名(创意共享 3.0 许可证)
ordered : } ) operation是一个批量更新操作的数组,取值有insertOne,deleteOne,updateOne,deleteMany,updateMany...document>// Available starting in 3.4 } } ] ) filter:用来过滤需要删除的数据 collation:指定排序规则 BulkWrite每组最大的操作数量不能超过...Capped集合限制 updateOne和updateMany操作,如果更新增加了文档的大小会抛出异常 replaceOne操作,如果新的文档大小比原始文档大,则会抛出异常 deleteOne和deleteMany...事务内的BulkWrite异常处理 如果BulkWrite使用事务,write concern和事务不能产生冲突,并且不管Bulk是有序还是无序操作,只要碰到错误,整个批操作都会被回滚。...BulkWrite操作 避免单调递增,假设分片键是递增的,那么所有的数据插入都会进入集合的最后一个块,因此该集群的插入能力始终受到最后一个分片的限制,可以通过以下方法来进行优化:1.反转分片键的二进制位
领取专属 10元无门槛券
手把手带您无忧上云