考核内容:js数据类型的使用 题发散度: ★★★ 试题难度: ★★★ 解题思路: 定义和用法 NaN 即非数值(Not a Number),NaN 属性用于引用特殊的非数字值,该属性指定的并不是不合法的数字...NaN 属性 与 Number.Nan 属性相同。 提示:请使用 isNaN() 来判断一个值是否是数字。原因是 NaN 与所有值都不相等,包括它自己。...语法 Number.NaN 也就是说 NaN不能用于任何数学计算; 但是可以使用做为字符串连接运算; 参考代码: ? 答案: A. NaN
先看个例子: int i=1; printf("%d====%d",++i,i++); 输出结果:3====1 是不是很意外,我开始也很意外。。。请看解析。...解析: C语言中,++i表示先运算后赋值,i++表示先赋值后运算。这个知识点相信只要会点编程的人都知道。 而C语言中,printf中自增自减运算符却有另一片天地。...// 在printf中,运算规则变为从右向左,输出规则为从左向右 /* 运算部分 */ // 由于运算是从右向左 i++ // 由于i++是先赋值后运算,会先将1赋值,最后这个位置输出肯定是1,运算后...,i=3,所以输出3 ++i // 此时i=4,输出当前值 i=4 ++i // 此时i=4,输出当前值 i=4 其实,如果运算过程中,遇到i++这样需要先赋值后运算的情况,编译器会将运算前的值存储在寄存器中...,以便在运算完成之后运行输出,所以后面输出的其实是寄存器中之前存储下来的值。
('User', userSchema); // 查询用户集合中的所有文档 User.find().then(result => console.log(result)); // 通过_id字段查找文档...({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result)) // findOne方法返回一条文档 默认返回当前集合中的第一条文档...({age: {$gt: 20, $lt: 40}}).then(result => console.log(result)) // 查询用户集合中hobbies字段值包含足球的文档 // User.find...result)) // 根据年龄字段进行降序排列 // User.find().sort('-age').then(result => console.log(result)) // 查询文档跳过前两条结果...name: '李四'}, {age: 120, name: '李狗蛋'}).then(result => console.log(result)) // 找到要删除的文档并且删除 User.updateMany
实际在数据库中产生的集合名为courses 2.创建文档 创建文档实际上就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下的save方法将数据保存到数据库中。...方法将数据保存到数据库中。...,将安装目录下的bin目录放置在环境变量中。...}).then(result => console.log(result)) // 更新多个 User.updateMany({查询条件}, {要更改的值}).then(result => console.log...,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户,就需要用到集合关联。
);根据 id 删除文档:Model.findByIdAndDelete(id, options, callback);更新(改)更新所有匹配条件的文档:Model.updateMany(filter,...在 Node.js 中,可以使用官方的 mongodb 包或者第三方的 mongoose 包来操作 MongoDB 数据库。...发布 Model 时,需要将 Schema 传入 mongoose.model() 方法中,生成集合(表)的构造函数。...思考在学习如何在Node.js中操作MongoDB数据库时,我们需要了解MongoDB数据库的基本概念和相关操作,例如集合、文档、Schema等。...在Node.js中,我们可以使用MongoDB官方提供的mongodb包来操作数据库,也可以使用第三方包mongoose,mongoose对mongodb进行了二次封装,使用起来更加方便。
实际在数据库中产生的集合名为courses 1.创建文档 创建文档实际上就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下的save方法将数据保存到数据库中。...方法将数据保存到数据库中。...,将安装目录下的bin目录放置在环境变量中。...}).then(result => console.log(result)) // 更新多个 User.updateMany({查询条件}, {要更改的值}).then(result => console.log...,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的 要查询文章的所有信息包括发表用户,就需要用到集合关联。
在弹出的输入框中输入:/usr/local回车,如下: ? 将mongodb复制与此文件夹中。...也需要一个odm工具来方便更好的操作。而mongoose就是i 一个良好的工具。 mongoose是一个优雅的nodejs对象文档模型。它是由关系型数据库的思想去应用到非关系型数据库。..., name: String }); // 3.编译一个Model, 它对应数据库中复数、小写的Collection const Model = mongoose.model...Keystone是以Express和MongoDB和mongoose为基础搭建的开源的Node.js CMS和web应用程序平台。...Keystone在官网上声称:在Node.js中,用Keystone搭建数据驱动的网站、应用程序和API是最容易的。
; 两个数值相加表示数学中的加法运算; 除号(/):整数在使用除号操作时,得到的结果仍为整数,小数部分会被直接忽略,而不是四舍五入,但是当整数除以0的时候,会引发算术异常(ArithmeticException...++ 和 -- :表示所操作的变量自增1和自减1,都只能操作变量,不能操作常量; 自增:++,自增操作符,变量值自增1,有前置和后置之分,只能操作变量。...唯一的区别是: 前置(++result): 表示对result增加1之后的结果进行运算; 后置(result++): 表示对result变量值增加1之前的值(原始值)进行运算,然后再对result增加1...true结果是false,!fasle结果是true。 位运算符 Bit operator 位操作是程序设计中按位对二进制数数据的一元和二元操作。...运算符优先级 在程序设计中有众多运算符,运算符之间的操作会有先后之分,也称优先级,详情如下: 表中的优先级1 -- 14,优先级依次从高到低,同一级按表中从右到左,或者从左到右的顺序执行。
user/pass:身份验证的用户名和密码。这是 mongoose 中特殊的选项,它们可以等同于 MongoDB 驱动中的auth.user和auth.password选项。...limit: 指定返回结果的最大数量 skip: 指定要跳过的文档数量 lean: 返回普通的 js 对象,而不是 Mongoose Documents。...如果出错,则 error 是出错信息,result 是 null;如果查询成功,则 error 是 null, result 是查询结果,查询结果的结构形式是根据查询方法的不同而有不同形式的。...常用的有findOneAndUpdate()、findByIdAndUpdate()、update()、updateMany()等。...updateMany() Model.updateMany(filter, update, options, callback) 更新符合查询条件的所有文档,相当于 Model.update(filter
Mongoose 索引 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快,MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧。...Mongoose 中除了以前创建索引的方式,也可以在定义 Schema 的时候指定创建索引。...Model.updateMany() 12. Model.updateOne() 13. Model.deleteMany() 14....Mongoose 的静态方法与实例方法 为 schema 添加静态方法时通过statics关键字添加,添加实例方法通过methods 关键字添加。...// 引入自定义的连接数据库文件 var mongoose=require('.
#Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...}) #mongoose基本使用 #mongoose的几个新的对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...文档 —— 是MongoDB的核心概念,是键值对的一个有序集,在JavaScript里文档被表示成对象。同时它也是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具表现力。...集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。...mongoose中任何任何事物都是从Schema开始的。每一个Schema对应MongoDB中的一个集合(collection)。Schema中定义了集合中文档(document)的样式。
$set 修改文档中的指定属性 $unset 删除文档中指定的属性 $inc 自增文档中指定的属性的值 $push $addToSet db.users.update({username: "..."}, {$set: {age: 10}}); // 替换旧的文档对象中某个属性的值(只替换符合条件的第一个文档对象) db.users.updateMany({username: "sunwukong...//在查询时,可以在第二个参数的位置来设置查询结果的--即投影 db.emp.find({}, {ename: 1, _id: 0, sal: 1}); 第四章 Mongoose 4.1 Mongoose...比 Node 原生的 MongoDB 驱动更容易 4.3 新的对象 mongoose 中为我们提供了几个新的对象: Schema(模式对象) • Schema 对象定义约束了数据库中的文档结构。...通过 Model 查询到结果都是 Document 对象或 Document 对象数组。
最小值:Number.MIN_VALUE,大于0的最小值。 NaN 是一个特殊的数字,表示Not A Number。 js中整数的运算基本可以保证精确。 如果使用js进行浮点数运算,可能不精确。...true = 1;false = 0;null = 0;NaN = NaN ) +: 可以对两个值进行加法运算,并将结果返回。 任何数与NaN相加,都是NaN。...+= -= *- /= %= 自增自减 自增:(++) 可以使变量在自身的基础上+1; 自增分为两种:后++(i ++),前++(++ i),无论是i++还是++i,都会立即使原变量值增加1。...&&:与; 可以对符号两侧的值进行与运算,并返回结果。 如果两个值都是true,返回true。只要有一个false,就返回false。 js中的与属于短路的与。...| |:或; 可以对符号两侧的值进行或运算,并返回结果。 只要有一个true,就返回true。 js中的与属于短路的或。第一个值是true,则不会检查第二个值。
由于加法运算符存在重载,可能执行两种运算,使用的时候必须很小心。 ? 上面代码中,由于从左到右的运算次序,字符串的位置不同会导致不同的结果。...上面代码中,减法、除法和乘法运算符,都是将字符串自动转为数值,然后再运算。 2.4 对象的加法 (1)如果运算子是对象,必须先转成原始类型的值,然后再相加。...这些语言中的幂运算符有着比其他的单目运算符(如一元 + 或一元 - )更高的优先级。但是作为例外,在 Bash 中,** 运算符被设计为比单目运算符优先级更低。...(2)在最新的 JavaScript(ES2016) 中,禁止使用带歧义的幂运算表达式。比如,底数前不能紧跟一元运算符(+/-/~/!/delete/void/typeof) ? 7.3 示例 ?...(1)如果要反转求幂表达式结果的符号,你可以采用这样的方式: ? (2)强制求幂表达式的基数为负数: ? 八、自增 (++) 自增运算符为其操作数增加1,返回一个数值。
非xxxx类似于一种否定逻辑 1.3-运算符优先级 不需要刻意的去记,因为开发中很少会遇到多个运算符参与的式子,万一遇到也可以通过()来提升优先级 1.png 运算符优先级:确定不同运算符的运算规则 1...* 前自增表达式:先自身+1,后赋值(将num的值赋值给自增表达式的结果) * 后自增表达式:先赋值,后自身+1 3.gif 4.gif 02-数据类型补充 1.1-五种基本数据类型补充...1.NaN:not a number 不是一个数字 (1)NaN是number数据类型中一个特殊的数值,是数学计算错误得到的一个结果 例如: '张三' - 100,在数学上这是一种错误的计算,它的结果就是...NaN (2)NaN与任何数字都不等,包含它本身 (3)NaN与任何数字计算得到的都是NaN 2.isNaN(数据):检测一个数据是不是NaN 得到的结果是布尔类型 例如:isNaN(NaN),结果为true...number类型再运算,如果无法转换则为NaN 数学正号 : +num 当 +/-号写在一个变量名的前面,此时表示数学的正/负数 自增自减(++ --) 算术运算符(+ - * / %) 比较运算符(>
常量 语法:const PI=3.14; 常量值是只读的,不能修改 和let的作用域是一样的 数据类型 undefined 表示:变量声明了,但是没有初始化 var x;//声明但是没有初始化 console.log...它会把参数转换为数值,如果得到的结果是NaN、Infinity或-Infinity,函数返回false(假),其他情况返回true(真)。...false转成数值是0,累加就是1 var d = 2.3; d++; //3.3,直接加1 执行顺序 ++i:先自增再运算 i=i+1 其他 i++;先运算再自增 其他运算 i=i+1 算术运算符...,则将另一个操作数转换为数值,然后进行数值比较 如果一个操作数是一个布尔值,则先将其转换为数值,然后再执行比较 逻辑运算符 &&(并且) 两边不全是boolean类型 第一个表达式转换为false,最终的结果为第一个操作数...第一个表达式转换为true,最终的结果为第二个操作数 || (或者) 两边不全是boolean类型 第一个表达式转换为false,最终的结果为第二个操作数 第一个表达式转换为true,最终的结果为第一个操作数
运算符的分类 JS 中的运算符,分类如下: 算数运算符 自增/自减运算符 一元运算符 逻辑运算符 赋值运算符 比较运算符 三元运算符(条件运算符) 算数运算符...操作之后,返回结果为布尔值。 非布尔值的与或运算【重要】 之所以重要,是因为在实际开发中,我们经常用这种代码做容错处理或者兜底处理。...http://img.smyhvae.com/20160401_01.jpg'; } 上方代码的意思是,获取返回结果中的result.data.imgUrl这个图片资源;如果返回结果中没有 result.data.imgUrl...也就是说,下面这样代码的打印结果,其实是true:(这个我们一定要注意,在日常开发中,很容易忽视) // 比较两个字符串时,比较的是字符串的字符编码,所以可能会得到不可预期的结果 console.log...console.log(NaN == NaN); //false console.log(NaN === NaN); //false 问题:那如果我想判断 b的值是否为NaN,该怎么办呢?
.为所有薪资低于10000的员工增加工资1000元 db.section.updateMany({wages:{$lte:10000}} , {$inc:{wages:1000}}); db.section.find...有时候我们只需要一个文档中的部分数据, 这时候就得通过映射在查询时, 可以在第二个参数来设置查询的结果投影 db.section.find({}, {name: 1, _id: 0, wages: 1...mongoose的相关概念 mongoose中提供了几个新的对象: + Schema(模式对象):Schema对象定义约束了数据库中的文档结构 + Model:Model对象作为集合中的所有文档的表示...,相当于MongoDB数据库中的集合collection + Document: Document表示集合中的具体文档 mongoose使用步骤 1.下载安装Mongoose: npm i mongoose...; }); 运行结果 在数据库中写入文档 // 1.
调用实例对象下的save方法将数据保存到数据库中。...1.3 mongoDB数据库导入数据 找到mongodb数据库的安装目录,将安装目录下的bin目录放置在环境变量中。...mongoimport –d 数据库名称 –c 集合名称 –file 要导入的数据文件 显示如下结果表示导入文件成功: ? 显示如下结果表示导入文件成功: ?...1.7 集合关联 通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的,要查询文章的所有信息包括发表用户,就需要用到集合关联。...修改用户信息分为两大步骤 1.增加页面路由 呈现页面 1.在点击修改按钮的时候 将用户ID传递到当前页面 2.从数据库中查询当前用户信息 将用户信息展示到页面中 2.
2.只要字符串中包含了非数字的内容(小数点按数字来算),则转换为 NaN。 3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。...// 返回结果:true console.log(isNaN(NaN)); // 返回结果:true 自增/自减运算符:++、—- 举例 1: var a = "666"; a++; console.log...因为 Number('abc')的结果为 NaN,再自增后,结果依然是 NaN 正号/负号:+a、-a 注意,这里说的是正号/负号,不是加号/减号。...情况三: null + 数字 等价于:0 + 数字 情况四: undefined + 数字 计算结果:NaN 运算符:-、*、/ 1、任何非 Number 类型的值做-、*、/运算时,会将这些值转换为Number...比如: result1 = 1 + 2 + '3' // 33 result2 = '1' + 2 + 3; // 123 3、任何值和NaN做运算的结果都是NaN。
领取专属 10元无门槛券
手把手带您无忧上云