MongoDB C#2驱动程序 - 无法从BsonType'Double'反序列化'String'

时间:2015-06-01 01:25:52

标签: c# mongodb mongodb-.net-driver

我是MongoDB的新手。我正在尝试检索查找集合中的所有条目。我收到以下错误:

  

{“反序列化Stock.Models.StockLookup类的Symbol属性时发生错误:无法从BsonType'Double'反序列化'String'。”}

这是我收到错误的代码:

var stockLookups = _stockLookupRepository.GetAllAsync().Result.OrderBy(l => l.Symbol);

这是被调用的方法:

public async Task<List<StockLookup>> GetAllAsync()
    {
        var result = await _collection.Find(sl => sl.Symbol != null).ToListAsync();
        return result;
    }

这是StockLookup类:

public class StockLookup
{
    public ObjectId Id { get; set; }
    public string Symbol { get; set; }
    public string Name { get; set; }
}

任何人都可以帮我弄清问题是什么吗?任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

这条消息几乎解释了自己。您将mysqli_fetch_field($result)定义为Symbol,而在数据库中则有一些string类型double的文档。它导致了反序列化问题。 要找出这些非法数据,请尝试:

Symbol

DON&#39; T 如果您的收藏中包含大量数据,请执行此操作。没有这方面的索引,它会变慢。在这种情况下,您可能需要在检查类型之前添加其他条件来过滤掉数据。

有一个reference of all $types。您可能想要检查这些数据如何进入您的收藏,否则会有更多非法数据。