0

コレクションにたくさんの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
4

1 に答える 1

1

このようにできるようで、他のプロパティは使用できません

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