public async Task Run() { //Given const string databaseName = "DATABASE_NAME"; const string clusterConnectionString = "CLUSTER_CONNECTION_STRING"; const string node1ConnectionString = "NODE_1_CONNECTION_STRING"; const string node2ConnectionString = "NODE_2_CONNECTION_STRING"; var clusterDatabaseRepository = new MongoDbRepository(clusterConnectionString, databaseName); var node1DatabaseRepository = new MongoDbRepository(node1ConnectionString, databaseName); var node2DatabaseRepository = new MongoDbRepository(node2ConnectionString, databaseName); var collectionName = Guid.NewGuid().ToString(); var objectId = Guid.NewGuid(); var model = new MyModel { Id = objectId }; //When, Then try { var result = await clusterDatabaseRepository.Upsert(model, collectionName); Assert.IsTrue(result); var resultNode1 = await node1DatabaseRepository.Get <MyModel>(model.Id, collectionName); Assert.IsNotNull(resultNode1); Assert.IsTrue(resultNode1.Id == model.Id); var resultNode2 = await node2DatabaseRepository.Get <MyModel>(model.Id, collectionName); Assert.IsNotNull(resultNode2); Assert.IsTrue(resultNode2.Id == model.Id); } finally { clusterDatabaseRepository.DeleteCollection(collectionName); } }