我有一个使用Robomongo工具在MongoDB中创建的数据库。如何通过ValuesControllers.cs中的默认Get方法在Web API中获取这些数据?
我们知道当我们使用这个url api / values时,我们会得到一个json文件。我想要这样的数据。
数据库名称:StudentInfo
馆藏名称:学生
{
_id : ObjectId(),
name : "lqbal",
department : "CSE",
phone : "0194949402"
}
答案 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"
}