MongoDB C# Driver - Wie InsertBatch mit Hilfe einer Liste von Dictionary<string, string>

Ich bin neu in mongodb + C# - driver so vergeben, von Naivität auf mein Ende.

Ich bin versucht, eine batch-insert auf eine Sammlung von Schlüssel-Wert-Paaren und als solche meine Datenstruktur ist vom Typ List<Dictionary<string,string>>.

Hier ist ein Beispiel meiner Persistenz-code:

public void Persist(string collectionName, List<Dictionary<string, string>> documents)
{
  string connectionString = ConfigurationManager.ConnectionStrings[CONNECTION_STRING_KEY].ConnectionString;
  MongoServer server = MongoServer.Create(connectionString);
  MongoCredentials credentials = new MongoCredentials("MYUser", "MyPassword");
  MongoDatabase myDb = server.GetDatabase("myDb", credentials);

  var collection = myDb .GetCollection(collectionName);

  using (server.RequestStart(myDb ))
  {
    var result = collection.InsertBatch(documents);
  }
}

Bekomme ich eine Fehlermeldung über die Serialisierung:

MongoDB.Bson.BsonSerializationException: Serializer
DictionarySerializer erwartet Serialisierung Optionen
geben Sie DictionarySerializationOptions, nicht DocumentSerializationOptions.

Fehlen mir Einstellungen?

EDIT: Mehr Informationen

Meine Wörterbücher sind meine Einheiten. Bedeutung, statt ein Objekt erstellt zu halten, Eigenschaften, die ich nur werfen Sie in eine Dictionary. Von mongo-Dokumentation, scheint es, als sollte dies nur zu übersetzen, um ein mongo Document.

WEITER BEARBEITEN: Drehen Sie die Frage

War ich in der Lage, eine einzelne Instanz zu legen, die durch die änderung der using-Anweisung:

using (server.RequestStart(myDb))
  {
    foreach(var doc in documents)
      collection.Insert(new BsonDocument(doc));
    //var result = collection.InsertBatch(typeof(Dictionary<string, string>), documents);
  }

Jedoch, meine Sorge ist die performance da unter einem realen Szenario, das ich einfach haben 10k+ Wörterbücher. Mit diesem code, wird der Fahrer schlau genug, um der Gruppe sind diese? gibt es einen Weg, um InsertBatch aber das gleiche erreichen?

Natürlich, jede Hilfe ist sehr willkommen.

InformationsquelleAutor OnResolve | 2012-08-22
Schreibe einen Kommentar