Я использовал метод MongoDB.Bson.Serialization.BsonSerializer.Deserialize () для десериализации из MongoDB.Bson.BsonDocument в MyType.Но метод всегда соответствует System.FormatException, так как поля в MyType не на 100% совпадают с полями в BsonDocument.
Я пытался преобразовать сложный объект json (например, mobj) из MongoDB (результат запроса)в C # объект (давайте назовем csobj), чтобы я мог иметь дело с данными.Тип данных defualt в csobj, который я использую - это строка.Но Mobj слишком сложен, и мы знаем, что это меньше схемы.
Однажды встретим тип данных, такой как BinData (0, ""), BinData (1, ""), BinData (2, ""), ISODate ("") и т. д. в mobj может возникнуть исключение System.FormatException.
Как только в mobj появятся дополнительные поля, может возникнуть исключение System.FormatException.
Если в имени поля есть пробелкак «Страница первая»: «XXXX», может возникнуть исключение System.FormatException, и я пока не знаю, как это исправить.
var client = new MongoClient("mongodb://xxxxxx");
var database = client.GetDatabase("xxxxxxxxxx");
var collection = database.GetCollection<BsonDocument>("xxxxxxxxxx");
var results = await collection.Aggregate<BsonDocument>(filterBsonDocumentArray).ToListAsync();
foreach (var doc in results)
{
var model = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<MyType>(doc); // always meet exception here
}
Примеры исключений:
(mongodbтип данных не может отображаться со строкой)
System.FormatException: произошла ошибка при десериализации свойства Id класса MongoQueryDemo.MyType: Невозможно десериализовать «String» из BsonType «Binary».---> System.'_id' не соответствует ни одному полю или свойству класса MongoQueryDemo.MyType.
Список моих вопросов приведен здесь:
Есть ли способ сообщить десериализатору, пожалуйста?быть нечувствительным к регистру;
Есть ли способ настроить отображение имени поля с mobj на csobj, например определить "_id" -> UserId, "Ip Addr" -> "IpAddr ";
Есть ли способ настроить тип данных: пусть тип данных BinData (0," "), BinData (1," "), BinData (2," "), ISODate ("") все могут быть преобразованы в строку без System.FormatException;
Есть ли способ обработки всего сложного отображения подобъекта в строку C # независимо от ее полей?Так как его динамика в схеме меньше mongodb, и я не смог предопределить какое-либо неизвестное поле в подобъектах.