jkr*_*r01 2 c# mongodb mongodb-.net-driver
我是 MongoDB 新手。我正在尝试检索查找集合中的所有条目。我收到以下错误:
{“反序列化 Stock.Models.StockLookup 类的 Symbol 属性时发生错误:无法从 BsonType 'Double' 反序列化 'String'。”}
这是我收到错误的代码:
var stockLookups = _stockLookupRepository.GetAllAsync().Result.OrderBy(l => l.Symbol);
Run Code Online (Sandbox Code Playgroud)
这是被调用的方法:
public async Task<List<StockLookup>> GetAllAsync()
{
var result = await _collection.Find(sl => sl.Symbol != null).ToListAsync();
return result;
}
Run Code Online (Sandbox Code Playgroud)
这是 StockLookup 类:
public class StockLookup
{
public ObjectId Id { get; set; }
public string Symbol { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我找出问题所在吗?任何帮助将不胜感激。
谢谢!
这个消息几乎已经解释清楚了。您将 定义Symbol为 a string,而在数据库中有一些文档具有double类型Symbol。它导致反序列化问题。要找出这些非法数据,请尝试:
db.StockLookup.find({Symbol: {$type: 1}}
Run Code Online (Sandbox Code Playgroud)
如果您的集合中有大量数据,请不要这样做。这方面没有索引,而且速度会很慢。在这种情况下,您可能需要在检查类型之前添加其他条件来过滤数据。
有所有 $types 的引用。您可能需要检查这些数据如何进入您的集合,否则将会有更多非法数据。
| 归档时间: |
|
| 查看次数: |
9754 次 |
| 最近记录: |