C# MongoDb和C:嵌入式或参考文档
MongoDb中的文档引用是推荐的方法还是嵌入文档是正确的方法?我的问题是在以下的背景下提出的C# MongoDb和C:嵌入式或参考文档,c#,mongodb,C#,Mongodb,MongoDb中的文档引用是推荐的方法还是嵌入文档是正确的方法?我的问题是在以下的背景下提出的 class ObjectType1 { ObjectId ID; ObjectType2 Type2Element; } class ObjectType2 { ObjectId ID; } 我知道我们可以使用MongoDBRef在第一个类中引用ObjectType2元素,但我无法找到FetchDBRefAs方法,因为我使用的是官方的mongodb C驱动程序,可能是找错了位置/名称空间 如果Mo
class ObjectType1
{
ObjectId ID;
ObjectType2 Type2Element;
}
class ObjectType2
{
ObjectId ID;
}
我知道我们可以使用MongoDBRef在第一个类中引用ObjectType2元素,但我无法找到FetchDBRefAs方法,因为我使用的是官方的mongodb C驱动程序,可能是找错了位置/名称空间
如果MongoDb中需要链接实体,特别是使用C,建议使用什么方法?
感谢您简短地回答您的问题:取决于您的用例 当我设计自己的db模式时,我喜欢遵循一些规则: 如果在代码中同时需要ObjectType1和ObjectType2,那么我建议您使用嵌入式方法,因为您只需要一个查询就可以对它们执行CRUD。此外,它更符合逻辑,因为您需要的所有信息都位于数据库中的同一位置 如果在代码中大多数时候只需要ObjectType2,那么我会将它们分为两个集合 这部分官方文件包含更多信息:
我知道我们可以使用MongoDBRef,我不知道你在哪里读到的,但它一定是一个旧的来源,或者是一个非常不知情的来源。不要使用DBRef。如果您想引用,那么在本地键和外键的首选项中使用纯ObjectId值或其他任何值,并在应用程序逻辑中定义它们指向的模型。DBRef与您在没有正式弃用通知的情况下得到的弃用概念非常接近。许多现代操作都不支持它,这是查询的一个普遍障碍。选择“嵌入”与“引用”实际上是基于意见的,唯一真正的解决方案完全基于您的实际应用程序使用模式和需求,不应受到人们对该主题的意见的任何影响。为了更好地理解您为什么使用其中一种,您应该阅读和理解现有的参考资料,如或。后者基本上仍然与意图有关@NeilLunn@NeilLunn如果你不介意的话,你能告诉我DbRef的不良影响吗?你推荐MongoDBRef还是在文档分离时你会使用ObjectId?当我学习Mongo时,我来到了这篇文章。让我从未使用过DBRef,因为似乎很多人都认为应该避免使用。