【发布时间】:2018-01-26 16:30:01
【问题描述】:
MongoDb 中的文档引用是推荐的方法还是嵌入式文档是正确的方法?我的问题来自以下背景。
class ObjectType1
{
ObjectId ID;
ObjectType2 Type2Element;
}
class ObjectType2
{
ObjectId ID;
}
我知道我们可以使用 MongoDBRef 来引用第一类中的 ObjectType2 元素,但我无法找到 FetchDBRefAs 方法(我使用的是官方 mongodb C# 驱动程序,可能正在查看错误的位置/命名空间)。
如果需要在 MongoDb 中链接实体,推荐的方法是什么,尤其是使用 C#? 谢谢
【问题讨论】:
-
“我知道我们可以使用 MongoDBRef” 我不知道你在哪里看到的,但它一定是一个旧的来源或者一个非常不了解的来源。不要使用
DBRef。如果要引用,请优先使用普通的ObjectId值或本地和外键的任何值,而是定义它们指向的模型“改为在您的应用程序逻辑中”。DBRef与您在没有正式弃用通知的情况下得到的一样接近弃用概念。它不受许多现代操作的支持,并且是查询的一般障碍。 -
“嵌入与参考”的选择实际上是基于意见的,唯一真正的解决方案完全基于您的实际应用程序使用模式和要求,不应以任何方式受到人们对该主题的意见的影响.为了更好地理解为什么使用“一个或另一个”,您应该阅读和理解现有的参考资料,例如MongoDB relationships: embed or reference? 或Mongoose populate vs object nesting。后者仍然与意图基本相关
-
谢谢@NeilLunn
-
@NeilLunn 如果您不介意,请教我 DbRef 的不良影响?