mongo shell script won't let me include “use <database>”

不打扰是莪最后的温柔 提交于 2019-12-18 11:01:44

问题


32-bit mongo 2.0.1 on a windows XP machine

//script filename: test.js  (one line shell script file to store a person)
db.cTest.save({Name: "Fred", Age:21});

run against database dbTest by entering the following 2 shell commands:

    > use dbTest
    switched to dbTest
    > load("test.js")

So far, so good.

But if I try and include the "use" statement in the script it fails:

//script filename: test.js  (including "use" statement)
use dbTest;
db.cTest.save({Name: "Fred", Age:21});

fails with error msg as follows:

    > load("test.js")
    SyntaxError: missing ; before statement
    Mon Dec 19 11:56:31: Error: error loading js file temp.js (shell):1

Adding or removing semicolons to test.js doesn't seem to matter.

So how do you put a "use" directive into a mongo shell script?


回答1:


http://www.mongodb.org/display/DOCS/Scripting+the+shell

use dbname
This command does not work in scripted mode. Instead you will need to explicitly define the database in the connection (/dbname in the example above).

Alternately, you can also create a connection within the script:

db2 = connect("server:27017/otherdbname")




回答2:


In a mongo script you can use the db.getSiblingDB('new_db_name') to get a reference of a new database. So, it it not mandatory to give the database name in the command line. You can use the script.js:

db = db.getSiblingDB('new_db_name');
print(db);

// the rest of your code for database "new_db_name"

and the output of this script is (invoked with mongo script.js):

MongoDB shell version: 2.2.2
connecting to: test
sag



回答3:


Well, it still is unfortunate that "load('file.js')" and "mongo file.js" don't actually use the same script interpreter as the interactive mongo shell. Opening the connection explicitly in the script is potentially a violation of the DRY principle because mongo already knows that information. What does work, though, is piping the file into mongo rather than passing its name on the command line:

mongo <file.js


来源:https://stackoverflow.com/questions/8565376/mongo-shell-script-wont-let-me-include-use-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!