У меня есть куча Paper документов в коллекции Papers. Каждый Paper имеет одну ссылку DBRef на документ Person. Таким образом, свойство person в документе Paper является DBRef для правильного Person
Человек
{'name' : 'Person A', 'slug' : 'PA'},
{'name' : 'Person B', 'slug' : 'PB'}
Бумага
{'name' : 'Paper 1', 'person': DBRef},
{'name' : 'Paper 2', 'person': DBRef},
{'name' : 'Paper 3', 'person': DBRef}
Я хотел бы создать запрос, который возвращает все документы, в которых упоминается человек А (slug=='PA'). Я попытался фильтровать в запросе и потерпел неудачу в операторе уменьшения карты. Как лучше всего справиться с этим в pymongo?
Этот запрос не дает результатов
for paper in db['papers'].find({'person.slug' : 'PA'}):
print paper
Map Reduce также возвращает нулевые результаты
mapper = Code("""
function () {
if (this.person.slug == slug) {
emit (this, 1);
}
}
""")
reducer = Code("""
function (key, values) {
return key;
}
""")
result = db['papers'].map_reduce(mapper, reducer, "myresults", scope={'slug' : 'PA'})
for doc in result.find():
print doc
_idлица А, а другой для получения документов, в которых упоминается этот идентификатор? - person paulmelnikow   schedule 05.06.2012