连接mongodb时选择数据库

时间:2014-12-01 14:25:52

标签: linux mongodb shell

我想从shell脚本向mongodb发送命令。在Mongodb 2.6之前,我可以使用以下命令执行此操作:

mongo --host db.example.com/mydb -u myuser -pMyPassword --eval 'db.getSiblingDB("mydb").addUser("someone","passss")';

或者我可以运行一个javascript文件,提供它:

mongo --host db.example.com/mydb -u myuser -pMyPassword  some.js;

升级到2.6版本的Mongodb后,这些命令对我来说不再适用。

有没有办法选择数据库并在其上运行命令?请记住,我想从linux shell脚本运行命令。

或者是否有更好的方法来添加mongodb用户并从shellcript运行javascript文件?

1 个答案:

答案 0 :(得分:0)

根据mongodb help,您可以使用以下行在外部脚本中连接数据库。

db = connect("localhost:27020/myDatabase");

您也可以使用以下行

mongo localhost:27017/test myjsfile.js

例如,请参阅以下运行。

$$>mongo --version
MongoDB shell version: 2.6.4
$$>mongo
MongoDB shell version: 2.6.4
connecting to: test
> show dbs
admin  (empty)
local  0.078GB
test   0.078GB
> use stackoverflow
switched to db stackoverflow
> db.questions.insert({a:1})
WriteResult({ "nInserted" : 1 })
> show collections
questions
system.indexes
> db.questions.findOne()
{ "_id" : ObjectId("547d95c671d7e080cfe5f977"), "a" : 1 }
> exit
bye


$$>mongo test --eval "printjson(db.questions.findOne())"
MongoDB shell version: 2.6.4
connecting to: test
null

$$>mongo stackoverflow --eval "printjson(db.questions.findOne())"
MongoDB shell version: 2.6.4
connecting to: stackoverflow
{ "_id" : ObjectId("547d95c671d7e080cfe5f977"), "a" : 1 }