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