mongo shell 通过返回信息定位错误点
有时候我们会通过mongo shell 运行一些脚本,去执行更新或运维需求。mongo shell 可执行的代码可以实现比较复杂的功能,代码也可以比较丰富。当执行报错时,如果可以快速定位到错误点,对解决bug, 可以事半功倍。
我们先测试一下:
Case 1 简单的向集合中插入一笔数据
执行代码:
db.testdecimal.insert({“val”: NumberDecimal( “9.99” )})
报错信息:
--16T14::51.349+ E QUERY [js] SyntaxError: illegal character @(shell):1:23
Case 2 将上面的代码包在一个 for 循环中
执行代码:
for (var i =; i<; i++){db.testdecimal.insert({“val”: NumberDecimal( “9.99” )})}
报错信息:
--16T14::00.900+ E QUERY [js] SyntaxError: illegal character @(shell):1:48
Case 3 将Case中的代码换成两行
for (var i =;
... i<; i++){db.testdecimal.insert({“val”: NumberDecimal( “9.99” )})}
报错信息
--16T14::54.577+ E QUERY [js] SyntaxError: illegal character @(shell):2:33
经过排错定位,错误为 “val” 中的“”是中文双引号。将至更新为英文。
Case 4
for (var i =; i<; i++){db.testdecimal.insert({"val": NumberDecimal( “9.99” )})}
报错信息:
--16T14::29.110+ E QUERY [js] SyntaxError: illegal character @(shell):1:70
再次排查,错误为 “9.99” 中的“”是中文双引号。将至更新为英文。
Case 5
for (var i =; i<; i++){db.testdecimal.insert({"val": NumberDecimal( "9.99" )})}
执行OK:
WriteResult({ "nInserted" : })
我们回头,再仔细看下。错误信息中最后的数字信息(红色标注)。
1:23 ; 1:48 ; 2:33 ; 1:70 。
其实这些数字,已经标注了,错误位于第几行,第几个字符。:(冒号)前,代表错误位于的行数;:(冒号)后,代表错误位于本行第几个字符。 但需要留意,这是在错误类型为 SyntaxError 情况下成立的。SyntaxError :代表尝试解析语法上不合法的代码的错误。当Javascript语言解析代码时,Javascript引擎发现了不符合语法规范的tokens或token顺序时抛出SyntaxError。 如果我们用一个未定义的函数或是函数名写错了或是什么样子呢? Case 6
执行代码:
db.testdecimal.find().preetty()
错误信息:
--16T15::37.501+ E QUERY [js] TypeError: db.testdecimal.find(...).preetty is not a function :
@(shell):1:1
如需将错误代码嵌套到其他语句中呢?
Case 7
执行代码:
for (var i =;
i<; i++){db.testdecimal.find().preetty()}
错误信息:
--16T15::37.532+ E QUERY [js] TypeError: db.testdecimal.find(...).preetty is not a function :
@(shell):2:11
mongo 没有 preetty()函数,只有 pretty()方法,它的作用是 使得查询出来的数据在命令行中更加美观的显示,不至于太紧凑。
我们看到此类的错误类型是 TypeError,用来表示值的类型非预期类型时发生的错误。当传入函数的操作数或参数的类型并非操作符或函数所预期的类型时,将抛出一个 TypeError 类型错误。
此类错误,抛出的数字,第一个还是错误所在的行数,而第二个就不是了,它是把后面的功能实现当成了一个点。
一句话总结:解决bug时,充分重视返回的错误信息。
本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!
mongo shell 通过返回信息定位错误点的更多相关文章
- Linux Shell 函数返回值
Shell函数返回值,常用的两种方式:return,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/sh fu ...
- Spring Cloud项目中通过Feign进行内部服务调用发生401\407错误无返回信息的问题
问题描述 最近在使用Spring Cloud改造现有服务的工作中,在内部服务的调用方式上选择了Feign组件,由于服务与服务之间有权限控制,发现通过Feign来进行调用时如果发生了401.407错误时 ...
- mongo Shell初体验
mongo shell是一个MongoDB的交互式JavaScript接口.您可以使用mongo shell来查询和更新数据以及执行管理操作. 打开cmd命令行,输入mongo,就可以进入mongo ...
- Linux Shell函数返回值
转:http://blog.csdn.net/ithomer/article/details/7954577 Shell函数返回值,一般有3种方式:return,argv,echo 1) return ...
- 2.Access the mongo Shell Help-官方文档摘录
总结: 1.使用help可以查看帮助信息db.help() help等 2.查看对应的实现方法.比如 test@gzxkvm52$ db.updateUser function (name, upd ...
- 图解Mongo Shell的使用
mongo shell是一个MongoDB的交互式JavaScript接口.您可以使用mongo shell来查询和更新数据以及执行管理操作. 本篇经验将和大家介绍Mongo Shell的使用方法,希 ...
- mongo shell
mongo shell mongo 连接 本地 mongo # 连接127.0.0.1:27017 远程 mongo "mongodb://mongodb0.example.com:2801 ...
- MongoDB ServerStatus返回信息
ServerStatus返回信息 ServerStatus返回mongodb中很多信息 http://docs.mongodb.org/manual/reference/command/serverS ...
- MongoDB error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js(转)
rror: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js 一般这种情况就是:自己指定的数据库,所以不能.自动加 ...
随机推荐
- 2019CCPC秦皇岛 E题 Escape(网络流)
Escape Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- CoderForces Round526 (A~E)题解
A. The Fair Nut and Elevator time limit per test 1 second memory limit per test 256 megabytes input ...
- CoderFocers-620C
There are n pearls in a row. Let's enumerate them with integers from 1 to n from the left to the rig ...
- Nginx安装echo模块echo-nginx-module
https://github.com/openresty/echo-nginx-module 这个模块不包含在 Nginx 源码中,安装方法: 1. 首先下载模块源码:https://github.c ...
- Docker私有仓库搭建与界面化管理
一.关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去. 但是有时候我们的使用场景需要我们拥有一个私有的镜 ...
- 【Spring MVC】Properties文件的加载
[Spring MVC]Properties文件的加载 转载:https://www.cnblogs.com/yangchongxing/p/10726885.html 参考:https://java ...
- 【CentOS7】常用命令
[CentOS7]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10646640.html 目录 ========================== ...
- 【hibernate】映射继承关系
[hibernate]映射继承关系 转载:https://www.cnblogs.com/yangchongxing/p/10405151.html ========================= ...
- poj 1679 The Unique MST (次小生成树模板题)
Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...
- vue+element 中 el-input框 限制只能输入数字及一位小数
仅个人经验,希望能帮到有需要的人. 第一次写 就话不多说了直接上代码. <el-input @keyup.native="proving(index)" v-model=&q ...