使用Web API从MongoDB获取数据

时间:2015-02-05 09:01:42

标签: mongodb asp.net-web-api

我有一个使用Robomongo工具在MongoDB中创建的数据库。如何通过ValuesControllers.cs中的默认Get方法在Web API中获取这些数据?

我们知道当我们使用这个url api / values时,我们会得到一个json文件。我想要这样的数据。

数据库名称:StudentInfo
馆藏名称:学生

{
  _id : ObjectId(),
  name : "lqbal",
  department : "CSE",
  phone : "0194949402"
}

1 个答案:

答案 0 :(得分:0)

您需要构建一个数据访问层,该层将获取API请求中传递的值并对数据库执行查询。 获得c#实体中数据库的结果后,web-api将能够自动将这些结果转换为JSON响应。

您可以定义一个c#实体来表示学生文档

public class Student
    {
        [BsonId]
        public ObjectId Id { get; set; }
        public string name { get; set; }
        public string department { get; set; }
        public string phone { get; set; }
    }

将这些包含添加到班级的顶部

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;
using MongoDB.Driver.Linq;

然后您的API Get方法如下

public Student Get(string id)
        {
            var client = new MongoClient("mongodb://localhost:27017");
            var server = client.GetServer();
            var db = server.GetDatabase("StudentInfo");
            var collection = db.GetCollection<Student>("Student");

            var student = ((MongoCollection)collection).AsQueryable<Student>().First(c => c.name == id);
            return student;
        }

连接部分作为标准,用于指定要使用的数据库和集合。 查询部分使用可通过c#mongo驱动程序获得的LINQ扩展来完成。您可以通过编写LINQ查询来查询数据库集合 - 驱动程序将自动创建在数据库上执行所需的实际查询。

获得学生证件后,您可以退回。 WebApi框架将自动将其转换为JSON文档

API结果应该看起来像

{
"Id": "54d3575c5157ba55281006a5",
"name": "lqbal",
"department": "CSE",
"phone": "0194949402"
}