Search code examples
rmongodbrmongodb

Balance reads in a MongoDB replica set with rmongodb


I have a MongoDB as a replica set with one master and one slave. I am using RmongoDB and I want to explicitly send a query to each machine using a parallelized for loop.

I succesfully created a conection with all the hosts:

mongo <- mongo.create(host=c("mastermng01:27001","slavemng01:27001"),
                      name="myRS",
                      username="user",
                      password="pass",
                      db="myDB")
ns_actual <- "myDB.MyCollection"

Then, I run a query like this:

cursor <- mongo.find(mongo,ns=ns_actual,query=list(var1="value"),
                    options=mongo.find.slave.ok)

So far, R knows the slave hosts and it is allowed to query them. But when it is going to do it? Can I force R to balance the queries among the hosts?


Solution

  • Sorry, no solution so far. The underlying C connector is not supporting this functionality. There is a new mongoC library available which supports this. But moving rmongodb to this library will take a lot of time which is currently not available.