找不到简单问题的解决方案:
我有文件 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/