可以在单个mongo连接中挑选复制集中的哪个数据库进行查询?

时间:2018-04-05 12:07:56

标签: node.js mongodb mongoose mongodb-query replicaset

所以在我的应用程序中,我有一个连接到replicaset db的mongoose连接,如下所示:

var mongoose = require("mongoose");
var config = "mongodb://user:password@exampleIP1:27017,exampleIP2:27017/dbName?replicaSet=rs0&readPreference=primaryPreferred"
var db = mongoose.connect(config);

它的primaryPreferred读取和我使用mongoose来声明我的模式和查询,就像在应用程序中的数百万个不同的地方。

var mongoose = require("mongoose");
var AnalyticsScheduleSchema = new mongoose.Schema({...});
mongoose.model('AnalyticsData', AnalyticsScheduleSchema, 'AnalyticsData');
...
mongoose.model("AnalyticsData").findById(...) //read
(new mongoose.model("AnalyticsData")).save... //create

基本上我只使用单例mongoose实例对数据库进行CRUD,这是一个primaryPreferred读取。

我的问题是,我有一个非常繁重的地图缩减操作,我想非常频繁地运行,可以在陈旧数据上运行,这些数据落后于主要用于分析目的。如何在某些特定情况下切换mongoose来执行slaveDB的读取?

我知道你可以在mongoose中用不同的readPreferences创建多个连接的方法,但是如果我这样做,我就不能再使用mongoose.model(" AnalyticsData")来查询正常的方式.findById ... 并且必须改变发生这种情况的所有地方。

有没有办法让我的当前代码保持正常工作并创建一个到secondaryPreferred的新连接或者有一个连接,并在查询期间指定我是否要从pimary或​​secondary读取?

0 个答案:

没有答案