gpt4 book ai didi

c# - 使用 C# 驱动程序从 mongodb 检索数据

转载 作者:太空狗 更新时间:2023-10-29 17:43:46 24 4
gpt4 key购买 nike

我在我的测试项目中使用 c# 的官方 mongodb 驱动程序,我已经将文档从 c# web 应用程序插入到 mongodb。在 mongo 控制台中,db.blog.find() 可以显示我插入的条目。但是当我试图检索它们时,.net 抛出异常

“System.InvalidOperationException:ReadString 只能在 CurrentBsonType 为 String 时调用,而不能在 CurrentBsonType 为 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();
}

谁能帮帮我?谢谢!

最佳答案

我想你只需要用 BsonId 标记你的博客 Id(并自己插入 id)属性:

public class Blog
{
[BsonId]
public String Id {get;set;}

public String Title{get;set;}
}

一切都应该没问题。问题是因为您没有标记哪个字段将是 Mongodb _id 和驱动程序生成的 _id 字段类型为 ObjectId。当驱动程序尝试将其反序列化时,他无法将 ObjectId 转换为字符串。

完整示例:

MongoCollection collection = md.GetCollection<Blog>("blog");
var blog = new Blog(){Id = ObjectId.GenerateNewId().ToString(),
Title = "First Blog"};
collection .Insert(blog);

MongoCursor<Blog> cursor = collection.FindAllAs<Blog>();
cursor.SetLimit(5);

var list = cursor.ToList();

关于c# - 使用 C# 驱动程序从 mongodb 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6772261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com