在嵌入式MongoDB文档中强制新的_id生成

时间:2011-12-05 22:10:24

标签: asp.net-mvc-3 c#-4.0 mongodb mongodb-.net-driver

我正在使用ASP.NET MVC 3,C#和MongoDB。我有一个带有嵌入式文档的模型,但我想为每个嵌入式文档自动生成一个新的_id。

我可以在代码中执行此操作并设置

Model._id = ObjectId.GenerateNewId();

但如果我不必担心这样做,我会很喜欢它,让MongoDB为每个嵌入式文档自动生成新的_id。

我不想将这些嵌入式文档标准化为新的集合,它们在这里有意义,但我希望为它们提供唯一的ID。

1 个答案:

答案 0 :(得分:2)

MongoDB“自动生成”的唯一ObjectId是用于主键的_id

当您保存文档时,MongoDB基本上不了解“架构”或“嵌入”文档或“子文档数组”。没有类型检查或模式验证,因此无法强制嵌入ID的实例化。

最好的办法是将它包装在父类中。如果这些嵌入式文档具有绑定到它们的特定类,则可以将GenerateNewId()放在该构造函数中。