Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MongoDb和C:嵌入式或参考文档_C#_Mongodb - Fatal编程技术网

C# MongoDb和C:嵌入式或参考文档

C# MongoDb和C:嵌入式或参考文档,c#,mongodb,C#,Mongodb,MongoDb中的文档引用是推荐的方法还是嵌入文档是正确的方法?我的问题是在以下的背景下提出的 class ObjectType1 { ObjectId ID; ObjectType2 Type2Element; } class ObjectType2 { ObjectId ID; } 我知道我们可以使用MongoDBRef在第一个类中引用ObjectType2元素,但我无法找到FetchDBRefAs方法,因为我使用的是官方的mongodb C驱动程序,可能是找错了位置/名称空间 如果Mo

MongoDb中的文档引用是推荐的方法还是嵌入文档是正确的方法?我的问题是在以下的背景下提出的

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,因为似乎很多人都认为应该避免使用。