コレクションにたくさんのPaper
ドキュメントがありPapers
ます。それぞれにドキュメントPaper
へのDBRefが1つありPerson
ます。したがって、Paper
ドキュメント内のpersonプロパティは、正しい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}
Person A(slug =='PA')を参照するすべての論文を返すクエリを作成したいと思います。クエリでフィルタリングを試みましたが、mapreduceステートメントで失敗しました。pymongoでこれを処理するための最良の方法は何ですか?
このクエリは結果を返しません
for paper in db['papers'].find({'person.slug' : 'PA'}):
print paper
MapReduceもゼロの結果を返します
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