我使用Mongo进行了一些非规范化的数据存储,但是我发现了一个小麻烦,我想修复它。
由于我的对象拥有自己的RegistrationCode
,这些记录对于我希望将其用作ID
的每条记录都是唯一的,因此我只需添加[BsonId]
。到目前为止一切都很好。
但是当我查看实际数据库时,我发现此字段不是RegistrationCode
,而是_id
。如何确保在实际数据库中正确命名?
public class Company
{
[BsonId]
public string RegistrationCode { get; set; } // Why is this named "_id" in the database?
// ...
}
答案 0 :(得分:1)
正如Evk所说,Mongo集合中的每个文档都必须有一个_id字段 - 请参阅MongoDB Reference Glossary。
在添加'[BsonId]'attibute时,您基本上正在做的是将RegistrationCode属性的值分配给_id字段。
按照惯例,您应该在POCO类中添加一个Id字段,这仍然允许您仍然能够在您的唯一RegistrationCode字段上查询/插入/更新/删除/索引。
public class Company
{
public ObjectId Id { get; set; } //By convention
public string RegistrationCode { get; set; }
// ...
}