gpt4 book ai didi

c# - 在 MongoDB 中使用 MongoDBRef 引用多个外部文档

转载 作者:可可西里 更新时间:2023-11-01 10:07:33 27 4
gpt4 key购买 nike

我遇到过这样一种情况,最好将领域模型的特定部分表示为关系模型。我阅读了关于 database references 的部分在 MongoDB 中并了解您可以通过提供对外部集合中各种文档的 $ref 引用的 JSON 数组来提供对多个文档的引用。

我看到的所有在代码中添加对外部文档的引用的示例都只针对单个文档,并且它们创建了 MongoDBRef 类型的公共(public)属性。在我看来,这种方法有很多不必要的开销,但它也没有明确说明如何存储对多个文档的引用。

如果你想在 Mongo 中提供外部文档之间的一对多关系,是否有必要提供一个包含 MongoDBRef 对象的集合属性?是否可以在我的 C# 代码中坚持使用标准实体对象的集合,并使用 BsonClassMap 将其映射到 Mongo 文档?

下面是一个简单的类,代表我目前拥有的模型。它似乎正确地保存了文档和引用,但我不喜欢公开 MongoDBRef 对象的公共(public)集合以及为使用 Person 类的任何人添加新文档所需的开销。

如果重要的话,我正在使用 MongoDB 2.0 及其 C# 驱动程序。

// This is how my class currently looks
public class Person
{
public string Name { get; set; }
public List<MongoDBRef> Vehicles { get; private set; }

public Person()
{
Vehicles = new List<MongoDBRef>();
}
}

// This is what I want my class to look like
public class Person
{
public string Name { get; set; }
public List<Vehicle> Vehicles { get; private set; }

public Person()
{
Vehicles = new List<Vehicle>();
}
}

最佳答案

DBRefs 不是存储对已知文档类型的引用的合适工具。相反,只需将引用文档的 _id 值保存在您的集合中。给定一个好的映射库(不确定 C#,但 C# 等同于 pymongo、mongoose、morphia 等)它将允许您完全按照自己的意愿行事。

仅当您在编译时不知道需要存储对哪种文档的引用时才应使用 DBRefs(例如,包含图像或文本等的“内容”字段)。

关于c# - 在 MongoDB 中使用 MongoDBRef 引用多个外部文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com