gpt4 book ai didi

python - MongoEngine:EmbeddedDocument 与 s。引用字段

转载 作者:可可西里 更新时间:2023-11-01 09:57:15 24 4
gpt4 key购买 nike

EmbeddedDocument 允许将文档存储在另一个文档中,而 RefereneField 仅存储它的引用。但是,他们正在实现类似的目标。他们有特定的用例吗?

附言:已经有一个 question在 SO 上,但没有好的答案。

最佳答案

这个问题的答案实际上取决于打算如何处理您存储在 mongodb 中的数据。请务必记住,ReferenceField 将指向 mongodb 中另一个集合中的文档,而 EmbeddedDocument 存储在同一集合中的同一文档中。

考虑这个模式:

Person
-> name
-> address

Address
-> street
-> city
-> country

如果您希望每个人只有一个地址并且每个地址只与一个人相关联(一对一关系)并且您通常要查询数据库中的一个或多个Person 文档,那么 Person.address 字段应该是 EmbeddedDocumentField

如果您希望每个人都有多个地址,但每个地址只会与一个人相关联(一对多关系)并且您仍然主要查询一个人,那么您可以使用 EmbeddedDocumentListField.

如果您希望每个人都有一个以上的地址,并且每个地址将与许多人相关联(多对多关系),您可能应该使用 ReferenceField

但是,即使您是一对一或一对多,如果 Address 是您感兴趣的数据模型的一部分,那么将其存储起来可能是有利的在它自己的集合中,因为它使聚合和索引更容易。

要考虑的另一点是,除非您 turn it off当您检索文档时,mongoengine 将取消引用每个 ReferenceField - 这可能会引入大量 ReferenceField 或对非常大文档的引用的性能损失。

关于python - MongoEngine:EmbeddedDocument 与 s。引用字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897566/

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