私はmongodb + C#ドライバを初めて使用しています。MongoDB C#ドライバ - Dictionaryのリストを使用してInsertBatchを行う方法<string、string>
私はキーと値のペアのコレクションにバッチインサートをしようとしています。そのような私のデータ構造はタイプList<Dictionary<string,string>>
です。私はシリアル化についてのエラーを取得する
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);
}
}
:ここ
は私の永続化コードのサンプルですMongoDB.Bson.BsonSerializationException:シリアライザ DictionarySerializerは、 型DictionarySerializationOptionsのシリアル化のオプションは期待できませんDocumentSerializationOptions。
設定がありません。
EDIT:詳細情報
私の辞書は私の実体です。つまり、プロパティを保持するオブジェクトを作成する代わりに、Dictionary
にダンプするだけです。 mongoのドキュメントから、これはちょうどmongo Document
に変換する必要があるように表示されます。
FURTHER EDIT:ツイスト質問
私が使用してステートメントを変更して挿入するために、単一のインスタンスを取得することができました:
using (server.RequestStart(myDb))
{
foreach(var doc in documents)
collection.Insert(new BsonDocument(doc));
//var result = collection.InsertBatch(typeof(Dictionary<string, string>), documents);
}
しかし、私の懸念は現実のシナリオの下で以来、パフォーマンスです私は簡単に10k +辞書を持っています。このコードを使用すると、ドライバはこれらをバッチ処理するのに十分スマートですか? InsertBatchを維持する方法はありますか?同じことを達成していますか?
もちろん、どんな助けでも大歓迎です。
を私が探していたまさに!ありがとうございました! – OnResolve