在MongoDB C#驱动程序中插入包含对另一个实体的引用的实体
我是NoSQL数据库的新手,因为我总是使用SQL。我在如何插入包含对单独文档对象的引用的实体方面遇到了一个问题。根据最佳实践等在MongoDB C#驱动程序中插入包含对另一个实体的引用的实体,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我是NoSQL数据库的新手,因为我总是使用SQL。我在如何插入包含对单独文档对象的引用的实体方面遇到了一个问题。根据最佳实践等 下面是代码(去掉不必要的位) MongoDB的实体(存储库可以包含许多项目,但最常被查询、添加、更新和删除的是项目实体,因此不引用存储库中的项目集合,反之亦然) 有一个API端点,它接受一个DTO,如下所示: //DTOs are not *that* small, each contains several primitive properties public cl
下面是代码(去掉不必要的位) MongoDB的实体(存储库可以包含许多项目,但最常被查询、添加、更新和删除的是项目实体,因此不引用存储库中的项目集合,反之亦然) 有一个API端点,它接受一个DTO,如下所示:
//DTOs are not *that* small, each contains several primitive properties
public class ProjectDto
{
public string Name { get; set; }
public Repository Repository { get; set; }
}
public class Repository
{
public string Name { get; set; }
}
控制器接受此项目DTO,并应将其插入数据库,心中有3个目标:
提前向您致以问候和感谢。您可以在中查看mongo文档以获取更新。选中IsUpsert选项,我认为它可以实现您想要的: 向上插入选项 如果UpdateOne、UpdateMany或ReplaceOne包含 Isupert选项设置为true的UpdateOptions参数实例 并且没有与指定筛选器匹配的文档,则执行该操作 创建新文档并将其插入。如果有匹配的 文档,然后该操作修改或替换匹配 一份或多份文件 还要复习文章。您可以更改存储数据的方式,在每个存储库文档中嵌入存储库和项目
//DTOs are not *that* small, each contains several primitive properties
public class ProjectDto
{
public string Name { get; set; }
public Repository Repository { get; set; }
}
public class Repository
{
public string Name { get; set; }
}