所以在我的应用程序中,我有一个连接到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读取?