栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

副本集管理员助手是如何实现的?

rs.*
副本集管理助手的
mongo
外壳是你可以从任何驱动程序发送的MongoDB命令包装。

您可以通过参考MongoDB文档来查看每个shell助手包装了哪些命令:

  • rs.initiate()
    提供围绕
    replSetInitiate
    数据库命令的包装。
  • rs.add()
    提供了一些
    replSetReconfig
    数据库命令和相应的mongo shell助手功能的包装
    rs.reconfig()
  • rs.conf()
    包装
    replSetGetConfig
    数据库命令。

请注意,

mongo
shell助手可能会对配置进行一些额外的验证或操作,因为它们打算通过交互式
mongo
shell使用。

您可以通过在外壳程序中调用命令而不用括号括起来来确认如何实现任何外壳程序助手,例如:

> rs.initiatefunction (c) { return db._adminCommand({ replSetInitiate: c }); }

从Node.js调用副本集数据库命令

可以使用

command()
以下方法通过Node.js驱动程序API来实现等效逻辑:

// Rough equivalent of rs.initiate()var MongoClient = require('mongodb').MongoClient;MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {  // Use the admin database for commands  var adminDb = db.admin();  // Default replica set conf  var conf = {};  adminDb.command({replSetInitiate: conf}, function(err, info) {     console.log(info);  });});

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

可以

mongo
--eval
命令中调用Shell 来运行Shell Helper ,而不是在Node.js中重新实现副本集Helper
(提示:包括
--quiet
以消除不必要的消息)。

例如,从您的Node应用程序调用:

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);});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号