我在一个集合中有一堆Paper
文档。Papers
每个文档Paper
都有一个 DBRef Person
。所以Paper
文档中的 person 属性是正确的 DBRefPerson
人
{'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') 的论文。我尝试在查询中进行过滤,但在 map reduce 语句中失败。在 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