我只想针对特定的mongodb数据库运行.js脚本,但似乎无法获得正确的语法。
echo "print(db.address.find().limit(1));" > test.js
mongo test.js
如何选择将要执行此操作的数据库,我尝试了use foo
的各种组合但没有成功。
> show dbs
admin (empty)
local (empty)
foo 0.203125GB
bar 0.203125GB
我想在这种情况下使用foo
。
答案 0 :(得分:20)
mongo <name of db> --eval "db.runCommand( <js in here> );"
或者如果你没有特定的runCommand脚本,你可以这样做:
mongo <name of db> --eval "<js in here>;"
如果您使用的是返回值:
mongo <name of db> --eval "db.eval('return fnName()')"
对于文件
mongo <name of db> some_instructions.js
答案 1 :(得分:1)
您可以使用here和MongoDB documentation中提到的db.getSiblingDB()
方法。
// Equivalent for "use <db>" command in mongo shell
db = db.getSiblingDB('foo')
这在使用use
帮助程序不可用的mongo shell编写脚本时特别有用。或者,当您无法在连接字符串上引用数据库时。