pymongo - 如何匹配查找?

Kev*_*vin 5 mongodb pymongo

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

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

“作者”:来自论文集“细胞类型”的“Migliore M”:来自模型集的“海马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)
Run Code Online (Sandbox Code Playgroud)

我没有结果。

我注意到,如果我不在 match 参数中调用 cellmodels.celltypes,它会找到匹配 Migliore M 的论文。我怎样才能让它也匹配 celltype:'Hippocampus CA3 pyramidal cell' from the models collection in this询问?

Kev*_*vin 5

这有效:

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)
Run Code Online (Sandbox Code Playgroud)