Как настраивать сопоставление имени или типа полей для метода MongoDB.Bson.Serialization.BsonSerializer.Deserialize - PullRequest
0 голосов
/ 02 февраля 2019

Я использовал метод 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.

Список моих вопросов приведен здесь:

  1. Есть ли способ сообщить десериализатору, пожалуйста?быть нечувствительным к регистру;

  2. Есть ли способ настроить отображение имени поля с mobj на csobj, например определить "_id" -> UserId, "Ip Addr" -> "IpAddr ";

  3. Есть ли способ настроить тип данных: пусть тип данных BinData (0," "), BinData (1," "), BinData (2," "), ISODate ("") все могут быть преобразованы в строку без System.FormatException;

  4. Есть ли способ обработки всего сложного отображения подобъекта в строку C # независимо от ее полей?Так как его динамика в схеме меньше mongodb, и я не смог предопределить какое-либо неизвестное поле в подобъектах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...