Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在MongoDB中进行高级列表建模和匹配_Python_Mongodb_Data Modeling_Database - Fatal编程技术网

Python 如何在MongoDB中进行高级列表建模和匹配

Python 如何在MongoDB中进行高级列表建模和匹配,python,mongodb,data-modeling,database,Python,Mongodb,Data Modeling,Database,我正在构建一个大学课程搜索应用程序,我的数据包含一个我需要匹配的前提字段 它看起来像这样:“任何英语、化学、方法或专业数学” 如果我使用原始Python结构,我会使用第一级列表和第二级列表,或者在本例中: [[“英语”、“文学”、“语言”]、[“化学”]、[“方法”、“专业数学”] 这就是我如何说这个案件需要一个英语和化学(方法或专家) 然后使用Python,我只需对其进行迭代并检查是否满足条件 那么,对于这样的数据和一系列输入主题,我如何使用MongoDB查询来检查课程是否合适呢?对于普通的查

我正在构建一个大学课程搜索应用程序,我的数据包含一个我需要匹配的前提字段

它看起来像这样:“任何英语、化学、方法或专业数学”

如果我使用原始Python结构,我会使用第一级列表和第二级列表,或者在本例中:
[[“英语”、“文学”、“语言”]、[“化学”]、[“方法”、“专业数学”]
这就是我如何说这个案件需要一个英语和化学(方法或专家)

然后使用Python,我只需对其进行迭代并检查是否满足条件


那么,对于这样的数据和一系列输入主题,我如何使用MongoDB查询来检查课程是否合适呢?

对于普通的查询操作符来说,您要做的事情太复杂了。因此,您需要使用可以在查询中执行任意JavaScript的。它附带了警告和限制,因此如果需要检查大量匹配排列,它可能会非常慢

一个可能的建议 帮助是创建一个单独的集合,其中的文档是您的个人或先决条件列表。这个集合将代表所有类的所有先决条件。例如:

{_id: ObjectId("50fe0f437f774e8013000001"), 
    prereq: ["English", "Literature", "Language"]},
{_id: ObjectId("50fe0f437f774e8013000002"), 
    prereq: ["Chemistry"]},
{_id: ObjectId("50fe0f437f774e8013000003"), 
    prereq: ["Methods","Specialist Maths"]},
...
课程本身将指向先决条件的目标,而不是实际值。然后,查询将分为两个步骤。首先找到与输入主题匹配的所有先决条件

db.preReqCollection.find({prereq: {$in: inputSubjectList}) 
==> matchingPreReqList (the List of ObjectIds from preReqCollection met by inputSubjectList)

然后使用一个更简单的
$where operator
查询,检查
匹配需求列表中是否有课程先决条件

Hmmm。。。我喜欢这个。谢谢你的帮助!