在MongoDB窗口中使用单个命令进行mongodb查询cli

问题描述:

我试图在单个命令中执行mongodb查询,这样我就可以在Windows软件中运行批处理脚本。 MongoDB的数据库已经建成,这里是我的工作Windows控制台命令和命令行查询:在MongoDB窗口中使用单个命令进行mongodb查询cli

C:\Program Files\MongoDB\Server\3.0\bin>mongo ds045565-a1.mongolab.com:45565/heroku_mydatabase 
2017-09-01T09:14:05.196+0100 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files 
MongoDB shell version: 3.0.7 
connecting to: ds045565-a1.mongolab.com:45565/heroku_mydatabase 
rs-ds045565:PRIMARY> db.auth("myusername","mypassword");db.getCollection('94081_DS_FuelNBS').find({}) 
{ "_id" : ObjectId("58ab4ae3bc5cf82663236b4f"), "code" : "D", "description" : "Diesel", "lastModified" : ISODate("2017-02-20T20:00:35.680Z") } 
{ "_id" : ObjectId("58ab4ae3bc5cf82663236b50"), "code" : "H", "description" : "Hydrogen", "lastModified" : ISODate("2017-02-20T20:00:35.680Z") } 
{ "_id" : ObjectId("58ab4ae3bc5cf82663236b51"), "code" : "P", "description" : "Petrol", "lastModified" : ISODate("2017-02-20T20:00:35.680Z") } 
rs-ds045565:PRIMARY> exit 
bye 

如果我再尝试执行作为一个单一的Windows命令我没有得到比错误信息以外的任何响应输出:

C:\Program Files\MongoDB\Server\3.0\bin>mongo ds045565-a1.mongolab.com:45565/heroku_mydatabase mymongodbcommands.txt > output.txt 

C:\ Program Files文件\ MongoDB的\服务器\ 3.0 \ BIN>

这里是mymongodbcommands.txt和output.txt的

mymongod内容bcommands.txt:

db.auth("myusername","mypassword");db.getCollection('94081_DS_FuelNBS').find({}) 

output.txt的

2017-09-01T09:15:41.604+0100 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files 
MongoDB shell version: 3.0.7 
connecting to: ds045565-a1.mongolab.com:45565/heroku_mydatabase 

请考虑Scripts for Mongo Shell - 这是在做你想要什么的正确方法

至于例如,对于您的情况:

mongo ds045565-a1.mongolab.com:45565/heroku_mydatabase -u myusername -p mypassword --eval "var c = db.getCollection('94081_DS_FuelNBS').find(); while(c.hasNext()) {printjson(c.next())}" 

你可以进一步建立你自己的mymongodbcommands.js并通过它:

mongo host:port/db mymongodbcommands.js > output.txt 

而js文件将包含身份验证,并且所需的命令

参见thisthat答案一堆类似的问题。

+0

感谢Kostiantyn,这现在只是似乎吐出js代码.... 2017-09-01T10:00:03.343 + 0100修补程序KB2731284或更高版本的更新未安装我控制,将零出数据文件 MongoDB的外壳版本:3.0.7 连接到:ds045565-a1.mongolab.com:45565/heroku_ltpz6v5f { \t “_mongo”:连接ds045565-a1.mongolab.com:45565, \t “_db”:heroku_ltpz6v5f, \t “_collection”:heroku_ltpz6v5f.94081_DS_FuelNBS, \t “_ns”: “heroku_ltpz6v5f.94081_DS_FuelNBS”, \t “_query”:{ \t \t \t}, \t “_fields”:空, \t “_limit”:0, \t “_skip”:0, –

+0

貌似传递给eval命令的语法不正确。尝试' - eval“var c = db.getCollection('94081_DS_FuelNBS')。find(); while(c.hasNext()){printjson(c.next())}”'我已经更新了相应的答案 – Kostiantyn

+0

It作品,你是一个天才,你的老板应该提倡你。非常感谢 –