如何在 Mongodb Shell 中显示行 #- ReplicaSet 配置错误

How to display line # in Mongodb Shell- ReplicaSet config Error

我正在我的本地机器上测试一个副本集。它仅用于测试。 我启动了本地 mongodb 实例 bin/mongod 然后启动三个实例,配置如下:

mongod --replSet rstest --logpath \data\rs2.log --dbpath \data\rs2 --port 27018 --smallfiles --oplogSize 64 

mongod --replSet rstest --logpath \data\rs3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64 

mongod --replSet rstest --logpath \data\rs3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64 

然后我开始mongo --port 27017 输入如下配置:

config = {_id:“rstest”, members:[
{_id:0,host:“localhost:27017”},
{_id:1,host:“localhost:27018”},
{_id:2,host:“localhost:27019”}
]};

当我输入上面的代码并按回车键时,我收到以下错误消息: E QUERY [js] SyntaxError: missing : 在 属性 id @(shell):1:101

之后
E QUERY    [js] SyntaxError: missing : after property id @(shell):1:101

我无法弄清楚小姐在哪里: 有没有办法让 shell 屏幕显示第 #s 行?或者 1:101

在哪里

知道我为什么会收到此错误吗?哪里不见了:应该去哪里?

问题是您在值周围有 smart quotes(又名弯引号)而不是正常的 " 字符。如果将 替换为直接 " 则没有语法错误。

I'm unable to figure out where is the miss : Is there a way to get the shell screen to display line #s? Or where is that 1:101

错误消息指示第 1 行,第 101 列,但语法错误不是特别有用,因为智能引号混淆了 JavaScript 解释器。

不幸的是,mongo shell 中没有打开行号的选项,因此您必须使用外部编辑器或计算错误消息中的行数和字符偏移量.理想情况下,您应该使用包含 JavaScript 语法检查和行编号的编辑器。

mongo shell:

中有几种方便地使用外部编辑器的方法

1) 在启动 mongo shell 之前设置 EDITOR 环境变量,并使用 edit command 使用外部编辑器修改 shell 变量。

例如:

export EDITOR=vim
mongo

> var cfg = {}
> edit cfg

当您退出外部编辑器时,shell 中的 edit 命令会创建一个临时文件,即 mongo shell 中的 eval'd。如果有任何语法错误,您的更改将不会被保存,因此这比扩展编码更适合快速更改。

2) 使用外部编辑器将 JavaScript 保存在一个文件中,并在 mongo shell:

中使用 load() command
load("/path/to/myfile.js")

这种方法更便于处理 JavaScript 的较大片段,因为您不必担心语法错误会阻止您的更改被保存。