我在Paper
集合中有一堆Papers
个文档。每个Paper
都有一个DBRef到Person
文档。因此,Paper
文档中的person属性是对正确的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')的论文的查询。我尝试在查询中进行过滤,但在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
答案 0 :(得分:1)
看起来我可以这样做,而且我不能使用其他属性
for paper in db['papers'].find({'person.$id' : person['_id']}):