我正在使用ASP.NET MVC 3,C#和MongoDB。我有一个带有嵌入式文档的模型,但我想为每个嵌入式文档自动生成一个新的_id。
我可以在代码中执行此操作并设置
Model._id = ObjectId.GenerateNewId();
但如果我不必担心这样做,我会很喜欢它,让MongoDB为每个嵌入式文档自动生成新的_id。
我不想将这些嵌入式文档标准化为新的集合,它们在这里有意义,但我希望为它们提供唯一的ID。
答案 0 :(得分:2)
MongoDB“自动生成”的唯一ObjectId
是用于主键的_id
。
当您保存文档时,MongoDB基本上不了解“架构”或“嵌入”文档或“子文档数组”。没有类型检查或模式验证,因此无法强制嵌入ID的实例化。
最好的办法是将它包装在父类中。如果这些嵌入式文档具有绑定到它们的特定类,则可以将GenerateNewId()
放在该构造函数中。