【发布时间】:2017-11-19 02:38:43
【问题描述】:
我正在学习 Plural Sight 课程,以深入了解 MongoDB。它是“路径”上的基础课程之一,似乎是在 2.0 之前制作的。因此,我在理解导师正在学习的一些科目时遇到了一些困难。
我希望看看是否有人可以根据他们的BsonID 澄清如何Find 任何对象?
这是我的对象:
public class Patient
{
[BsonElement("_id")]
[BsonId]
public string Name { get; set; }
public ICollection<Ailment> Ailments { get; set; }
public ICollection<Medication> Medications { get; set; }
}
这就是我试图查询它的方式:
public HttpResponseMessage Get(int id)
{
var patient = _patients.Find(pat => pat._id == id).ToList();
if(patient == null)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Patient Not Found..");
}
return Request.CreateResponse(HttpStatusCode.OK, patient);
}
此语法不允许我构建项目,因为没有名称为 _id 的属性。我也尝试使用 actual 属性 ID,但这似乎在构建时会产生某种问题(很可能是因为其中已经有一个由 BsonID 创建的 ID)。
如果以前有人问过这个问题,我真的很抱歉,但我真的找不到关于这个问题的任何帮助。看起来上面应该有很多资源(即我们新手在搜索 "c# querying mongodb find on BsonId" 之类的东西时应该能够得到一些好的资源)。。 p>
我完全理解这是否会被否决,但如果有时间的人可以在这里帮助我,我真的很高兴。
【问题讨论】:
-
我认为这里有already been answered。
-
如果我错了,请纠正我,但
ObjectId不是已弃用吗?至少当我尝试使用它而不是BsonId时,它向我抛出了一个错误,提示BsonTypes(或类似名称)中没有具有该名称的属性。 -
ObjectId 是一种非常适合 Mongo 中的 Id 属性的类型(如 int 或 string)......尽管在我们最近的项目中,我们使用 Guid 而不是 ObjectId 因为我们不想要将我们所有的模型紧密耦合到 Mongo(以防我们想要更改持久层)。 BsonId 是如果您不想使用默认的
public ObjectId Id{ get; set; }来装饰您的 Id 字段的属性 (BsonIdAttribute)。