如何确保[BsonId]字段在数据库中命名为属性名称而不是`_id`

时间:2016-09-16 19:46:35

标签: c# mongodb

我使用Mongo进行了一些非规范化的数据存储,但是我发现了一个小麻烦,我想修复它。

由于我的对象拥有自己的RegistrationCode,这些记录对于我希望将其用作ID的每条记录都是唯一的,因此我只需添加[BsonId]。到目前为止一切都很好。

但是当我查看实际数据库时,我发现此字段不是RegistrationCode,而是_id。如何确保在实际数据库中正确命名?

public class Company
{
    [BsonId]
    public string RegistrationCode { get; set; } // Why is this named "_id" in the database?
    // ...
}

db

1 个答案:

答案 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; } 
    // ...
}