【问题标题】:Converting MongoDB documents into c# list of objects将 MongoDB 文档转换为 c# 对象列表
【发布时间】:2016-04-22 03:09:57
【问题描述】:

我正在尝试编写一个方法,它将所有 Book 文档从 MongoDB 返回到我的 mvc 应用程序。首先,我连接到数据库,检索集合并将该集合转换为 Json 文件。接下来,我使用序列化程序创建一个列表,其中指定了几个字段(名称、作者等),我尝试将其反序列化为列表并使用 for 循环返回书籍列表。可悲的是,我在返回行中遇到错误(转换错误)。欢迎任何建议!

public List<Book> getAllBooks() 
    {
        var mongoClient = new MongoClient("mongodb://localhost");
        var database = mongoClient.GetDatabase("SearchForKnowledge");
        var coll = database.GetCollection<BsonDocument>("Book");
        coll.ToJson();

        List<Book> collection = new List<Book>();

        JavaScriptSerializer js = new JavaScriptSerializer();
        collection = (List<Book>)Newtonsoft.Json.JsonConvert.DeserializeObject(coll.ToString());

        for (int i = 0; i < collection.Count(); i++) 
        {
            return collection[i];
        }
    }

【问题讨论】:

    标签: c# asp.net-mvc mongodb


    【解决方案1】:

    好吧,你应该尝试更简单的方法:

     // add this using first
     using MongoDB.Driver.Linq;
    
     var coll = database.GetCollection<Book>("Book").AsQueryable<Book>();
    

    而且你可以做任何事情,例如:

    var someBooks = coll.Where(b => b.Year == 2014).Skip(0).Take(10).ToArray();
    

    PS:你需要看看这个教程:https://mongodb-documentation.readthedocs.org/en/latest/ecosystem/tutorial/use-linq-queries-with-csharp-driver.html

    【讨论】:

    • 但是归还收藏中的所有书籍怎么样?这种方法不是只有在某些条件下才有效吗?得到它的值后我可以只返回 coll 变量吗?
    • 当然可以,使用 ToArray() 或 ToList() 扩展。例如。 database.GetCollection("Book").ToArray();
    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2015-10-06
    相关资源
    最近更新 更多