問題描述
指定在 mongodb .js 腳本中使用哪個數據庫 (Specify which database to use in mongodb .js script)
I just want to run a .js script against a particular mongodb database, but can't seem to get the correct syntax.
echo "print(db.address.find().limit(1));" > test.js
mongo test.js
How do I select the database that this will be executed on, I've tried various combinations of use foo
with no success.
> show dbs
admin (empty)
local (empty)
foo 0.203125GB
bar 0.203125GB
I would like to use foo
in this case.
參考解法
方法 1:
mongo <name of db> --eval "db.runCommand( <js in here> );"
Or if you dont have a specific runCommand script, you can just do:
mongo <name of db> --eval "<js in here>;"
If you are using a return value:
mongo <name of db> --eval "db.eval('return fnName()')"
For a file
mongo <name of db> some_instructions.js
方法 2:
You can use the db.getSiblingDB()
method, as mentioned here and in the MongoDB documentation.
// Equivalent for "use <db>" command in mongo shell
db = db.getSiblingDB('foo')
This is particularly useful when writing scripts using the mongo shell where the use
helper is not available. Or when you cannot refer to the DB on the connection string.
(by markdsievers、Chris Barretto、idrositis)