Python Mongoengine数据库关系和连接字段
您好,我正在尝试与mongoengine建立一个工人项目关系,将有各种项目和工人。 捐款将是该计划的主要投入。我需要这些数据库用于将来的功能。 我希望在数据库之间建立一些关系,而不是根据输入更新所有内容。比如, [1] 工人的总工作时间 [2] 工人在该项目上工作的总小时数 [3] 项目的连续百分比计算,百分比参考取决于指定的工时 [4] 到目前为止,项目成本取决于工人的每小时工资和工作时间 我是noSQL数据库的新手,我不知道我写的东西是否正确。是否可以使用一些映射函数在数据库之间建立这些关系?我不知道我应该用什么来处理这些问题,或者是否需要对代码进行任何更改才能正常工作。 你能给我写一些例子或建议一些研究这些东西的来源吗。在过去的两个小时里,我一直沉浸在mongoengine文档中,但无法满足我的需求Python Mongoengine数据库关系和连接字段,python,database,mongodb,nosql,mongoengine,Python,Database,Mongodb,Nosql,Mongoengine,您好,我正在尝试与mongoengine建立一个工人项目关系,将有各种项目和工人。 捐款将是该计划的主要投入。我需要这些数据库用于将来的功能。 我希望在数据库之间建立一些关系,而不是根据输入更新所有内容。比如, [1] 工人的总工作时间 [2] 工人在该项目上工作的总小时数 [3] 项目的连续百分比计算,百分比参考取决于指定的工时 [4] 到目前为止,项目成本取决于工人的每小时工资和工作时间 我是noSQL数据库的新手,我不知道我写的东西是否正确。是否可以使用一些映射函数在数据库之间建立这些关系
提前感谢您的帮助。您不会使用单独的数据库……您将位于一个数据库中,并且可能有不同的集合。但基于您的4个关键输出要求,我建议您只需使用一个集合将其保持平坦-并将您的应用程序设计为放入满足您的4个输出要求的字段/数据…这就是NoSQL的优势-不要将内容拆分,然后将其合并-而是将所有数据放在一起 您通常不想输入聚合总和,因为计算最好在输出上完成,所以只需计算输入…只需以字段/格式输入粒度数据,这将使聚合查询易于运行
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]