mongodbclosures选项不可用

我目前的问题:我有一个生产服务器,只是更新的mongod,但失去了一些function。

在早期版本( v2.0.6 )中,我能够使用--shutdown选项运行mongod ,并且会杀死所有其他实例。

现在版本v2.4.5 – 如果我运行:

 mongod --shutdown 

结果是:

 error command line: unknown option shutdown use --help for help 

版本信息: mongod --version

 db version v2.4.5 Mon Sep 16 14:09:38.994 git version: a2ddc68ba7c9cee17bfe69ed840383ec3506602b 

我有这个选项或类似的东西是很重要的,因为我有一个pipe理新实例的服务器进程。

例如:

 var spawn = require('child_process').spawn, result = spawn('mongod', ['--quiet', '--shutdown', '--directoryperdb', '--dbpath', __dirname + '/database']); 

编辑:
Mongodb文档仍然有--shutdown命令选项。
链接: http : //docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

 Alternately, you can shut down the mongod instance: using the --shutdown option from a driver using the shutdown. For details, see the drivers documentation for your driver. 

编辑:
我觉得我应该更新这个问题。 从v0.9.6开始,这个问题已经在mongojs包装中得到了修复。 但是,仍然有一些问题需要在问题#97中列出,但是应该满足大多数要求。

你有没有尝试在mongo shell中使用db.shutdownServer()?

从文档:

要停止在后台或前台运行的mongod实例,请在mongo shell中发出db.shutdownServer()助手。 使用以下顺序:

要为在默认端口27017上运行的mongod实例打开mongo shell,请发出以下命令:

 mongo 

要切换到admin数据库并closuresmongod实例,请发出以下命令:

 use admin db.shutdownServer() 

当通过身份validation到admin数据库或未通过本地主机接口连接身份validation的系统上连接到mongod时,只能使用db.shutdownServer()。


根据您的意见,您可以通过驱动程序中的pipe理数据库运行shutdown命令来执行相同的操作:

 {shutdown : 1} 

我并不是最熟悉node.js的驱动程序,但是在一般的驱动程序中有两个选项来运行命令,一个总是可以工作的:

  1. 使用你的驱动程序的包装runCommand(你可以在这样的mongo shell中使用:)

    db.runCommand({shutdown:1});

  2. 使用内置的$cmd伪集合来运行你的命令。 命令的包装器实际上使用这种方法,如果没有其他选项,则可以针对$ cmd运行查询来closures服务器:

    DB $ cmd.findOne({ “关机”:1})。

如果您没有运行驱动程序,则可以使用REST界面(如果运行mongod使用--rest命令行选项)。 通过发出POST请求,您可以对pipe理数据库运行命令:

 http://localhost:28017/admin/$cmd/?filter_shutdown=1&limit=1 

这相当于对$cmd运行以前的查询。

由于“–shutdown”选项在较新版本的mongo中不可用,因此现在必须手动终止进程或login并运行:

 use admin; db.shutdownServer(); 

但是你可以通过做一行来完成这一点:

 mongo 127.0.0.1/admin --eval "db.shutdownServer()" 

假设你连接到127.0.0.1的本地数据库。 你只能使用–eval参数运行1行,所以use admin; db.shutdownServer(); use admin; db.shutdownServer(); 是不是一个选项,但是你可以通过在IP后添加“/ admin”来完成连接到pipe理数据库。

如果其他人在运行OS X时通过教程发现了此命令,则该命令仅在Linux机器上可用,并且在OS X上不可用(请参阅http://docs.mongodb.org/manual/reference/program/mongod/ #cmdoption – closures它明确说明这一点)。 我不确定这是不是原来的海报发生了什么,但希望它可以帮助别人。