我在我的测试项目中使用官方mongodb驱动程序用于c#,我已经将文件从c#web应用程序插入mongodb . 在mongo控制台中,db.blog.find()可以显示我插入的条目 . 但是当我试图检索它们时,.net会抛出异常
"System.InvalidOperationException: ReadString can only be called when CurrentBsonType is String, not when CurrentBsonType is ObjectId."
我的实体类很简单
namespace MongoDBTest
{
public class Blog
{
public String _id
{
get;
set;
}
public String Title
{
get;
set;
}
}
}
这是我的检索代码
public List<Blog> List()
{
MongoCollection collection = md.GetCollection<Blog>("blog");
MongoCursor<Blog> cursor = collection.FindAllAs<Blog>();
cursor.SetLimit(5);
return cursor.ToList();
}
任何人都可以帮助我吗?谢谢!
4 回答
我想你只需要用
BsonId
标记你的博客ID(并自己插入id)属性:一切都应该没问题 . 问题是因为您没有标记Mongodb _id和驱动程序生成的带有ObjectId类型的_id字段的字段 . 当驱动程序尝试反序列化它时,他无法将ObjectId转换为String .
完整的例子:
使用C#从MongoDB中检索数据非常简单,有三种不同的方法可以为前端推出数据
列表
光标
linq
上面的代码显示使用游标检索数据 . Referrence
在github上看一下我的sample project . 最近,我对MongoDB真的很感兴趣 . 此应用程序显示了许多您可能感兴趣的有用的东西; MongoDB的存储库模式 .
id成员的类型和名称应该不同,如下所示
ObjectId
在命名空间MongoDB.Bson
中