【问题标题】:Mongoengine database relations and connected fieldsMongoengine 数据库关系和连接字段
【发布时间】:2020-03-06 19:13:14
【问题描述】:
import mongoengine

def global_init():
    mongoengine.register_connection(alias="core", name="project")

class Worker(mongoengine.Document):
    username = mongoengine.StringField()
    salary_per_hour = mongoengine.FloatField()

    total_hours_worked = ********[1]

    meta = {
        "db_alias": "core",
        "collection": "users"
    }

class Project(mongoengine.Document):
    name = mongoengine.StringField()
    associated_users = mongoengine.ListField(ReferenceField(User))
    progress = mongoengine.EmbeddedDocumentField(Progress)

    meta = {
        "db_alias": "core",
        "collection": "projects"
    }

class Contrib(mongoengine.Document):
    project = mongoengine.ReferenceField(Project)
    user = mongoengine.ReferenceField(User)
    hour = mongoengine.FloatField()

    meta = {
        "db_alias": "core",
        "collection": "contribs"
    }

class Progress(mongoengine.EmbeddedDocument):
    total_hours = ********[2]
        percentage = ********[3]
    total_cost = ********[4]

您好,我正在尝试与 mongoengine 建立工人-项目关系,将会有各种项目和工人。 贡献将是该计划的主要投入。我需要这些数据库来实现未来的功能。 我想在数据库之间建立一些关系,而不是根据输入更新所有内容。例如;

[1] 工人的总工作时间。

[2] total_hours 工人在该项目上工作。

[3] 项目的连续百分比计算,百分比参考取决于指定的工作时间。

[4] 到目前为止的项目成本取决于工人的薪水_每小时及其工作时间

我是 noSQL 数据库的新手,即使我写得对,我也不知道。是否可以通过一些映射功能在数据库之间建立这些关系?我不知道我应该为这些使用什么,或者是否需要对代码进行任何更改才能正常工作。 你能写一些例子或建议我一些研究这些东西的资源吗?我在 mongoengine 文档中迷失了过去 2 小时,但无法满足我的需求。

提前感谢您的帮助。

【问题讨论】:

    标签: python database mongodb nosql mongoengine


    【解决方案1】:

    你不会使用单独的数据库....你会在一个数据库中并且可能有不同的集合。但根据您的 4 个关键输出要求,我建议您将其与单个集合保持一致 - 并设计您的应用程序以放入满足您的 4 个输出要求的字段/数据......这是 NoSQL 的优势 - 不要不要将事物分开然后加入它们——而是将所有数据放在一起......

    您通常不想输入汇总总和,因为该计算最好在输出上完成,因此只需计算输入...只需以字段/格式输入粒度数据,这将使您的汇总查询易于运行...。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2013-12-27
      相关资源
      最近更新 更多