在Mongoose中检索副本集状态

时间:2014-06-17 11:50:35

标签: javascript node.js mongodb mongoose

我正在构建一个Node.js应用程序,它从MongoDB集群中读取。该应用程序使用Mongoose与Mongo进行通信。

我想构建一个功能,它能够告诉我,mongoose实时了解MongoDB副本集(如调用rs.status()),但到目前为止我无法找到互联网上的任何信息。

这样做的目的是能够监控副本集中是否有更改,并在需要时将其报告回来。

问题是,到目前为止,我在互联网上找不到这个主题。有没有人知道如何开始它?如果我能为此目的使用当前的猫鼬连接,那就太好了。

1 个答案:

答案 0 :(得分:2)

你可以这样做,但你需要连接到" admin"数据库,除了应用程序的其余部分使用之外,您可能还需要一个不同的连接。类似的东西:

var mongoose = require("mongoose");

mongoose.connect(
    "mongodb://localhost:27017,localhost:27018,localhost:27019/test");

var conn = mongoose.createConnection(
    "mongodb://localhost:27017,localhost:27018,localhost:27019/admin");

conn.on("open",function() {

  conn.db.command({"replSetGetStatus":1 },function(err,result) {
    console.log( result );
  });

});

等待连接建立也很重要,因此"事件"打回来。猫鼬将在内部"排队"它是自己的方法操作,直到建立连接,但是当抓取本地db对象的句柄并从中执行方法时,这不适用。