Ich bin neu bei mongodb + C# -Treiber so verzeihen Sie jede Naivität an meinem Ende.MongoDB C# Treiber - How to InsertBatch mit einer Liste von Dictionary <string, string>
Ich versuche, eine Batch-Einfügung auf eine Sammlung von Schlüssel-Wert-Paaren zu machen, und als solche ist meine Datenstruktur vom Typ List<Dictionary<string,string>>
.
Hier ist eine Probe meiner Ausdauer 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);
}
}
ich eine Fehlermeldung über die Serialisierung erhalten:
MongoDB.Bson.BsonSerializationException: Serializer DictionarySerializer erwartet Serialisierungsoptionen von Typ DictionarySerializationOptions, nicht DocumentSerializationOptions.
Fehle ich Einstellungen?
EDIT: Weitere Informationen
Meine Wörterbücher meine Entitäten sind. Bedeutung, anstatt ein Objekt zu erstellen, um Eigenschaften zu halten, lasse ich sie einfach in eine Dictionary
. Aus der Mongo-Dokumentation scheint es, dass dies nur zu einem Mongo Document
übersetzt werden sollte.
WEITERE EDIT: Twist Frage
konnte ich eine einzelne Instanz erhalten, indem Sie die Anweisung using einfügen zu:
using (server.RequestStart(myDb))
{
foreach(var doc in documents)
collection.Insert(new BsonDocument(doc));
//var result = collection.InsertBatch(typeof(Dictionary<string, string>), documents);
}
aber meine Sorge Leistung, da unter einem realen Szenario Ich werde leicht 10k + Wörterbücher haben. Ist der Treiber mit diesem Code intelligent genug, um diese zu chargen? Gibt es eine Möglichkeit, InsertBatch beizubehalten, aber dasselbe zu erreichen?
Natürlich wird jede Hilfe sehr geschätzt.
Genau das, was ich gesucht habe! Vielen Dank! – OnResolve