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

发布于 2024-12-19 19:08:54 字数 279 浏览 2 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

脸赞 2024-12-26 19:08:55

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文