使用 Web API 从 MongoDB 获取数据

Getting Data From MongoDB using Web API

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

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

数据库名称:StudentInfo
集合名称:学生

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

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

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

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

将这些包含添加到 class

的顶部
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;
using MongoDB.Driver.Linq;

那么你的APIGet方法如下

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 查询来查询数据库集合 - 驱动程序将自动创建在数据库上执行所需的实际查询。

一旦你有了学生文件,你就可以return了。 WebApi框架会自动将其转换为JSON文档

API 结果应该类似于

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