【问题标题】:Autogenerating values for child/sub-documents in a collection within a MongoDB document为 MongoDB 文档中的集合中的子/子文档自动生成值
【发布时间】:2012-07-17 02:37:43
【问题描述】:

我的 MongoDB 集合有文档,每个文档都可以包含一组子文档。每个子文档都需要一种方法来唯一标识它,以便我以后可以替换它或更新它。

如何告诉 MongoDB 为集合中的每个子文档生成唯一值?

我正在使用 C# MongoDB 驱动程序。

{
    _id: 'gd37dg67dg63782gd78',
    name: 'foo'
    docs: [
        {
            idvalue: 'autogenerated',
            y: 10
        },
        {
            idvalue: 'autogenerated',
            y: 10
        },
        {
            idvalue: 'autogenerated',
            y: 10
        },
    ]
}

【问题讨论】:

  • 文档的索引是不是有点像ID?
  • 刚刚粘贴了一个示例来演示我在问什么

标签: c# mongodb


【解决方案1】:

MongoDB 本身不会为您执行此操作,但您可以执行许多文档映射器为子文档执行的操作,并在保存它们之前为其分配 ObjectId 值。这将为您从 C# 驱动程序中的每个字段获取一个新的且足够独特的值:

ObjectId.GenerateNewId()

如果您使用的是文档映射器,请查看它对“嵌套文档”的支持程度。很有可能它会毫不费力地为您做到这一点。

【讨论】:

  • 我知道 django nonrel fork 使用嵌入式模型为您处理这个问题。所以我认为其他司机也会这样做
  • C# 驱动程序不会自动执行此操作。如果愿意,可以编写自定义 IBsonSerializer 来执行此操作。
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
  • 2018-10-21
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多