CurrentBsonType是String,而不是当CurrentBsonType是ObjectId时

时间:2012-02-28 19:37:24

标签: mongodb mongodb-.net-driver

“反序列化类Class1的Property1属性时发生错误:只能在CurrentBsonType为String时调用ReadString,而不能在CurrentBsonType为ObjectId时调用。”

我将bsonid放在类的字符串guid上并映射该类并对其进行序列化,但当我尝试将我的对象从bsondocument反序列化回类时,它会给我这个错误。

我该如何解决这个问题?

public class Class1 
{
      [BsonId]
      public string ClassGuid { get; private set; }
}

然后映射班级:

if (!BsonClassMap.IsClassMapRegistered(typeof(WordOntology)))
{
      BsonClassMap.RegisterClassMap<WordOntology>();
}

然后反序列化

MongoCursor<Class1> _returnResults = _collection.FindAs<Class1>(_query);

然后循环:

foreach(BsonDocument _document in _returnResults) 
{
    //exception here
}

1 个答案:

答案 0 :(得分:1)

您的集合中可能存在与您的类定义不匹配的现有文档。您可以使用mongo shell查找它们(查找具有您期望字符串的ObjectId的文档)。

如果这不能解释它,你能提供你的类声明和一个不会正确反序列化的示例文档(使用mongo shell显示)吗?