c# - 使用 mongo C# 驱动程序在嵌入式文档中维护 Id 属性名称

标签 c# mongodb mongodb-.net-driver

我有一个包含嵌入式文档数组的 mongo 文档。嵌入文档有一个名为“Id”的属性。

{ Name: "Outer object", Embedded: [ {Name: "Embedded A", Id: "5f1c591a71dc237199eeaeda"} ] }

我的 C# 映射对象看起来像这样(显然是一种简化)

public class Outer
{
    public string Name { get; set; }
    public IEnumerable<Inner> Inners { get; set; }
}

public class Inner
{
    public string Name { get; set; }
    public string Id { get; set; }
}

当我将外部写入数据库时​​,C# 驱动程序将 Inner.Id 属性的名称更改为 _id。如何规避此自动重命名?我试过在 Id 属性上使用 [BsonElement("Id")] 属性,但没有帮助。

最佳答案

MongoDB 文档 explicitly states :

Documents in MongoDB are required to have a key, _id, which uniquely identifies them.

另一方面,C# 属性通常是 pascal 大小写并且不使用前缀,因此驱动程序设计者 apparently decided 强制将 Id 属性映射到 _id 数据库属性

如果您想绑定(bind)一个非_id 属性,而该属性恰好在MongoDB 中被称为Id,您可以声明另一个C# 属性使用 Id 以外的名称,因此驱动程序不会干扰它:

public class Inner
{
    public string Name { get; set; }

    [BsonElement("Id")]
    public string IdStr { get; set; }
}

关于c# - 使用 mongo C# 驱动程序在嵌入式文档中维护 Id 属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523742/

相关文章:

arrays - Mongodb聚合推送索引

c# - MongoDB 数组查询

c# - 如何在 C# MongoDB 中为多态类映射定义默认鉴别器

c# - Newtonsoft.JSON v9.01 + FileNotFoundException(.NET 核心类库)

c# - 使用 async/await 执行并行任务

c# - 将对象数组序列化为 Xxxxs 而不是 ArrayOfXxxx

linux - mongodb数据库恢复脚本

java - 如何通过_id查询mongodb?

c# - MongoDB:推荐在 .NET 上使用的驱动程序?

c# - 如何在 WPF 中尽可能高效地绘制图形