Как запросить разные результаты в mongodb с помощью python?

У меня есть коллекция монго с несколькими документами, предположим, что следующее (предполагает, что у Тома было два учителя истории в 2012 году по какой-то причине)

{
"name" : "Tom"
"year" : 2012
"class" : "History"
"Teacher" : "Forester"
}

{
"name" : "Tom"
"year" : 2011
"class" : "Math"
"Teacher" : "Sumpra"
}


{
"name" : "Tom",
"year" : 2012,
"class" : "History",
"Teacher" : "Reiser"
}

Я хочу иметь возможность запрашивать все отдельные классы, которые когда-либо были у «Тома», даже если у Тома было несколько классов «История» с несколькими учителями, я просто хочу, чтобы запрос получил минимальное количество документов, таких как Том в все они, и "История" появляется один раз,в отличие от результата запроса, который содержит несколько документов с повторяющейся «Историей».

Я взглянул на: http://mongoengine-odm.readthedocs.org/en/latest/guide/querying.html

и хотите иметь возможность попробовать что-то вроде:

student_users = Students.objects(name = "Tom", class = "some way to say distinct?")

Хотя, похоже, это не документировано. Если это не синтаксически правильный способ сделать это, возможно ли это в mongoengine или есть ли способ сделать это с какой-либо другой библиотекой, такой как pymongo? Или мне нужно запросить все документы с Томом, а затем выполнить некоторую обработку после -, чтобы получить уникальные значения? Синтаксис приветствуется в любом случае.

6
задан Rolando 17 August 2012 в 14:36
поделиться