强制在嵌入式 MongoDB 文档中生成新的 _id
我正在使用 ASP.NET MVC 3、C# 和 MongoDB。我有一个带有嵌入式文档的模型,但我想为每个嵌入式文档自动生成一个新的 _id。
我可以在代码中执行此操作并设置
Model._id = ObjectId.GenerateNewId();
但如果我不必担心执行此操作并让 MongoDB 自动为每个嵌入文档生成新的 _id,我会喜欢它。
我不想将这些嵌入文档标准化为一个新集合,它们在这里有意义,但我想为它们提供一个唯一的 ID。
I am working with ASP.NET MVC 3, C# and MongoDB. I have a model with embedded documents, but I would like to auto-generate a new _id for each of my embedded documents.
I can do this in the code and set
Model._id = ObjectId.GenerateNewId();
But I would love it if I didn't have to worry about doing this and let MongoDB auto-generate the new _id for each embedded document.
I do not want to normalize out these embedded documents into a new collection, they make sense here, but I'd like to have a unique ID for them.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MongoDB “自动生成”的唯一
ObjectId
是它用于主键的:_id
。当您保存文档时,MongoDB 基本上对“架构”或“嵌入”文档或“子文档数组”一无所知。没有类型检查或模式验证,因此无法强制实例化嵌入的 ID。
最好的选择是将其包装在父类中。如果这些嵌入文档具有与其关联的特定类,则可以将
GenerateNewId()
放入该构造函数中。The only
ObjectId
that MongoDB "auto-generates" is the one it uses for the primary key:_id
.When you save a document, MongoDB knows basically nothing about "schema" or "embedded" documents or "arrays of sub-documents". There's no type-checking or schema validation, so there's no way to force the instantiation of the embedded IDs.
Your best bet is to wrap it up in the parent class. If those embedded documents have a specific class tied to them, you can put the
GenerateNewId()
in that constructor.