mongodb - mongo --shell file.js 和 "use"语句

标签 mongodb sublimetext2 sublimetext3

找不到简单问题的解决方案:

我有文件 text.js

use somedb
db.somecollection.findOne()

当我使用来自文件的重定向命令在 cmd 中运行此文件时: “mongo

正常工作

但是当我尝试这种方式时

“mongo text.js”或“mongo --shell test.js”

我收到了这个错误信息

MongoDB 外壳版本:2.2.0 连接到:测试 输入“帮助”寻求帮助 12 月 5 日星期三 16:05:21 语法错误:缺少;在声明 pathToFile\test.js.js:1 之前 加载失败:pathToFile\test.js.js

“使用 somedb”失败。如果我删除此行,它会正常运行,但控制台是清晰的。

有什么想法,这是什么以及如何解决?

我正在努力寻找解决方案,为 Sublime Text 2 创建构建工具。 默认构建文件是

{
"cmd": ["mongo","$file"]
}

但在这种情况下我得到上面的错误

附言。发布这个问题后,我立即找到了 SublimeText2 的解决方案:

{
"selector": "source.js",
"shell":true,
"cmd": ["mongo < ${file}"]
}

附言。在发布这个问题后,我立即找到了 SublimeText3 的解决方案:

{
"selector": "source.js",
"shell":true,
"cmd": ["mongo","<", "$file"]
}

这个构建工具可以正常工作

最佳答案

use dbname 是交互式 shell 中的辅助函数,当您像现在这样将 mongo shell 与 JS 脚本文件一起使用时,它不起作用。

对此有多种解决方案。最好的方法,IMO 是将数据库名称连同主机名和端口名显式传递给 mongo,如下所示:

mongo hostname:27017/dbname mongoscript.js//用你的端口号替换 27017

更好的方法是在脚本开头定义数据库:

mydb=db.getSiblingDB("yourdbname");
mydb.collection.findOne();
etc.

后者更可取,因为它允许您在需要时在同一个脚本中与多个数据库交互。

关于mongodb - mongo --shell file.js 和 "use"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725904/

相关文章:

mongodb - 如何通过mongodb中的两个键删除重复条目?

sublimetext2 - 如何为 Sublime text 2 中的语言创建新的语法突出显示集

node.js - Nodemon index.js

mongodb - 我应该如何使用 mgo 处理 UUID 字段?

c++ - 禁用特定语言功能的自动完成

sublimetext - 在 Sublime Text 3 中禁用引号内的代码完成

python - 在 Sublime Text 3 中使用 wxPython

sublimetext2 - Sublime Text 2 自动完成弹出窗口无法正常工作

node.js - Mongoose 在引用的文档属性中查找

sublimetext2 - 如何创建键绑定(bind)快捷方式以在 sublime 文本中运行自定义包/插件