我有一个名为“元素”的集合,用于存储课程和曲目。课程和曲目使用名为 cms_content_type 的字段进行区分,该字段对于课程来说是“课程”,对于曲目来说是“曲目”。有一个 cms_id 字段可以唯一标识一个元素,无论是曲目还是课程。轨道由 track_lessons 字段中的一个或多个课程组成。
课程文档的结构是:
{
'_id': ObjectId('1234'),
'name': 'Working with Tags',
'cms_content_type': 'Lesson',
'cms_id': 'abcd1234'
}
跟踪文件的结构是:
{
'_id': ObjectId('4567'),
'name': 'Tags 101',
'cms_content_type': 'Track',
'cms_id': 'pqrs4567'
'track_lessons':[
{'lesson_cms_id': 'efgh1234'},
{'lesson_cms_id': 'jklm1234'}
]
}
我想查询此元素集合以获取任何轨道中不存在的课程列表。我怎样才能做到这一点?我是 MapReduce 的新手。我必须使用它来获取此列表吗?
另一个要求是我应该能够对检索到的课程列表进行排序和分页。因此,我更愿意编写动态查询,而不是将结果存储在单独的集合中并进行处理。
非常感谢任何帮助。