2016-04-03 2 views
2

У меня очень большая коллекция базы данных манго.MongDb Как найти элемент с недопустимыми данными

Теперь у ночной работы с большим количеством задач есть одна задача, чтобы пробежать по ней.

код работает с Еогеасп над ним, как это:

var sets = Collection.FindAll(); 
await sets.ForEachAsync(handler) 

Теперь этим утром я получил:

System.FormatException: Произошла ошибка при десериализации Connections свойство класса SR.BusPortal.DomainModel.Search.StoredConnectionSet: произошла ошибка при десериализации свойства DeepLinkToken класса SR.BusPortal.DomainModel.Search.StoredConnectionStep: Inval Идентификатор BsonType: 34.

Свойства, на котором ошибка связана определяются следующим образом:

[IgnoreNull] 
[DataMember(Order = 1390, Name = "lt")] 
public string[] DeepLinkToken { get; set; } 

Есть ли какие-либо специальные строки, которые могут быть проблематичными в этом массиве?

Теперь Как узнать, какой документ имеет недопустимое свойство? и какова была его ценность? Есть ли способ выбрать его? например с шеф-поваром манго или C# api?

Одна идея состоит в том, чтобы читать все как BsonDocuments, а затем вручную десериализовать их вручную BsonSerializer.Deserialize<MyType>(doc);. Но есть ли лучший способ?

Обновление Я создал небольшой инструмент для тестирования, но я не получил никакого исключения. Неужели я ошибаюсь, думая, что следующий код должен сломаться/бросить конкретный доминант? Или более вероятно, что это была лишь временная ошибка?

source.FindAll(options).ForEachAsync((doc, pos) => 
     { 
      try 
      { 
       var element = BsonSerializer.Deserialize<StoredConnectionSet>(doc); 
      } 
      catch(Exception err) 
      { 
       if(Debugger.IsAttached) // I run in debug with an attached VS debugger 
       { 
        Debugger.Break(); 
       } 

       Console.WriteLine(err); 
       throw; 
      } 
     }) 

ответ

0

Я выяснил, что это не было связано с данными. Это было связано с некоторыми проблемами связи, которые иногда возникали.

Не знаете, почему это заканчивается этим исключением, но решение проблемы с подключением разрешило эту ошибку.

Смежные вопросы