pymongo - 如何匹配查找?

时间:2017-02-02 01:33:52

标签: mongodb pymongo

我有两个系列,一个模型和一个论文集。我需要能够匹配两者中的字段。它们有一个共同的字段叫做引用,它包含一个标识符。

我希望匹配具有以下内容的文档

'作者':来自论文集的'Migliore M' 'celltypes':来自模型集合的'Hippocampus CA3锥体细胞'

以下是我的代码:

pipeline = [{'$lookup': 
                {'from' : 'models',
                 'localField' : 'references',
                 'foreignField' : 'references',
                 'as' : 'cellmodels'}},
             {'$match':
                 {'authors' : 'Migliore M', 'cellmodels.celltypes' : 'Hippocampus CA3 pyramidal cell'}},


             ]

for doc in (papers.aggregate(pipeline)):
    pprint (doc)

我没有结果。

我注意到如果我没有调用match参数中的cellmodels.celltypes,它会找到与Migliore M匹配的文章。我怎样才能让它与细胞类型相匹配:来自模型的'Hippocampus CA3锥体细胞'此查询中的集合?

1 个答案:

答案 0 :(得分:1)

这有效:

pipeline = [{'$lookup': 
                {'from' : 'models',
                 'localField' : '_id',
                 'foreignField' : 'references',
                 'as' : 'cellmodels'}},
            {'$unwind': '$cellmodels'},
             {'$match':
                 {'authors' : 'Migliore M', 'cellmodels.celltypes' : 'Hippocampus CA3 pyramidal cell'}},
            {'$project': 
                {'authors':1, 'cellmodels.celltypes':1}} 
             ]

for doc in (papers.aggregate(pipeline)):
    pprint (doc)