我可以使用MongoDb驱动程序从node.js调用rs.initiate()和rs.Add()吗?

我可以使用MongoDb驱动程序从node.js调用rs.initiate()和rs.Add()吗?,node.js,mongodb,docker,kubernetes,Node.js,Mongodb,Docker,Kubernetes,我希望在使用Docker和Kubernetes时,通过侧车自动设置MongoDb副本集 上述设置并不十分重要,归根结底,我需要能够从node.js应用程序调用mongo副本集命令(例如rs.initiate(),rs.add('anotherserver'),rs.conf(),rs.reconfig(),等等) 注意:它不必来自节点应用程序,如果有人知道另一种方法来完成同样的事情,请分享您的想法 更新:我能够让这项工作正常进行,并使sidecar开源供其他人使用 副本集管理帮助程序是如何

我希望在使用Docker和Kubernetes时,通过侧车自动设置MongoDb副本集

上述设置并不十分重要,归根结底,我需要能够从node.js应用程序调用mongo副本集命令(例如
rs.initiate()
rs.add('anotherserver')
rs.conf()
rs.reconfig()
,等等)

注意:它不必来自节点应用程序,如果有人知道另一种方法来完成同样的事情,请分享您的想法

更新:我能够让这项工作正常进行,并使sidecar开源供其他人使用

副本集管理帮助程序是如何实现的?
mongo
shell中的是MongoDB命令的包装器,您可以从任何驱动程序发送这些命令

通过参考MongoDB文档,您可以看到每个shell helper包装了哪些命令:

  • 提供数据库命令的包装器
  • 为数据库命令的某些功能和相应的mongo shell helper
    rs.reconfig()
    提供包装
  • 包装数据库命令
请注意,
mongo
shell帮助程序可能会对配置执行一些额外的验证或操作,因为它们将通过交互式
mongo
shell使用

您可以通过调用shell中的命令(不带尾随括号)来确认任何shell帮助程序的实现方式,例如:

> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
从Node.js调用副本集数据库命令 等效逻辑可通过Node.js驱动程序API实现,使用:

注意:它不必来自节点应用程序,如果有人知道另一种方法来完成同样的事情,请分享您的想法

您可以使用
--eval
命令调用
mongo
shell来运行shell帮助程序,而不是在Node.js中重新实现副本集帮助程序(提示:包括
--quiet
以抑制不必要的消息)

例如,从节点应用程序调用:

var exec = require('child_process').exec;
var rsAdmin = exec('mongo --eval "var res = rs.initiate(); printjson(res)" --quiet', function (error, stdout, stderr) {
   // output is in stdout
   console.log(stdout);
});

+1谢谢@Stennie,实际上我偶然发现了你关于这个话题的另一个答案,并且正在实施中。。。工作就像一种享受。敬请期待!谢谢@Stennie,如果您感兴趣,请查看我的问题编辑以了解更多信息。非常有用,我希望我能给您5张赞成票!
var exec = require('child_process').exec;
var rsAdmin = exec('mongo --eval "var res = rs.initiate(); printjson(res)" --quiet', function (error, stdout, stderr) {
   // output is in stdout
   console.log(stdout);
});