我读过 this page但没有得到何时使用嵌入功能以及何时使用链接。我在 django 中有一个项目,我正在使用 MongoDB。在我的 models.py 文件中,我有以下模型:
class Projects(models.Model):
projectName =models.CharField(max_length = 100,unique=True,db_index=True)
projectManager = EmbeddedModelField('Users')
class Teams(models.Model):
teamType = models.CharField(max_length =100)
teamLeader = EmbeddedModelField('Users')
teamProject = EmbeddedModelField('Projects')
objects = MongoDBManager()
class Users(models.Model):
name = models.CharField(max_length = 100,unique=True)
designation = models.CharField(max_length =100 )
teams = ListField(EmbeddedModelField('Teams'))
class Tasks(models.Model):
title = models.CharField(max_length = 150)
description = models.CharField(max_length=1000)
priority = models.CharField(max_length=20)
Status = models.CharField(max_length=20)
assigned_to = EmbeddedModelField('Users')
assigned_by = EmbeddedModelField('Users')
child_tasks = ListField()
parent_task = models.CharField(max_length = 150)
我的问题是,如果我们进行嵌入,我们是否必须更新所有模型中的对象。就像我想更新“用户”的名称一样,我必须为模型运行更新:项目、团队、用户和在我的情况下,任务或链接会更好吗?
最佳答案
在您的示例中,是的,更改用户名意味着如果您使用嵌入,那么您必须通过额外的步骤更新所有其他文档。在您的情况下更合适的是链接(引用)。这涉及查询时的额外步骤,但由于您的特定“业务逻辑”,它会更好。
一般来说,如果一个给定的文档需要从多个不同的地方访问,那么将其作为引用而不是嵌入是有意义的。这同样适用于文档频繁更改的情况。
关于python - 在 MongoDB 中嵌入与链接。何时嵌入以及何时链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239819/