Skip to content

Instantly share code, notes, and snippets.

@kaushikraj
Created February 2, 2014 16:39
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save kaushikraj/8771106 to your computer and use it in GitHub Desktop.
Save kaushikraj/8771106 to your computer and use it in GitHub Desktop.
C# implementation of inserting documents in mongodb with replicaset. The code inserts 100 documents and recovers from insert failure. (similar code to python's implementation at https://gist.github.com/mongolab-org/5347810)
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Threading;
using System.IO;
namespace ConsoleApplication1
{
public class Stamp
{
public long Tick;
}
class Program
{
public const string connectionString = "mongodb://testdbuser:testdbpass@flip.mongolab.com:53117,flop.mongolab.com:54117/testdb?replicaSet=rs-flip-flop";
public const int Max = 100;
public const int WaitTime = 3;
public static void SaveData()
{
int i = 0;
MongoClient client = new MongoClient(connectionString);
MongoServer server = client.GetServer();
MongoDatabase database = server.GetDatabase("testdb");
string collectionName = GetRandomCollectionName();
MongoCollection collection = database.GetCollection(collectionName);
try
{
while (i < Max)
{
try
{
Console.Write("Insert attempt : {0}", i + 1);
collection.Insert<Stamp>(new Stamp() { Tick = DateTime.Now.Ticks });
Console.WriteLine(", done.");
}
catch (Exception ese)
{
Console.WriteLine("exception : {0}.", ese.Message);
Console.WriteLine("Sleeping for {0} seconds before attempting again", WaitTime);
Thread.Sleep(WaitTime * 1000);
continue;
}
i++;
Thread.Sleep(1000);
}
}
finally
{
collection.Drop();
}
}
private static string GetRandomCollectionName()
{
return string.Format("col-{0}", DateTime.Now.Ticks) ;
}
static void Main(string[] args)
{
try
{
SaveData();
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment