0

我在一个集合中有一堆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
4

1 回答 1

1

看起来我可以这样做,并且我不能使用其他属性

for paper in db['papers'].find({'person.$id' : person['_id']}):
于 2012-06-04T23:27:04.000 回答