我有两个系列,一个模型和一个论文集。我需要能够匹配他们两个的字段。它们有一个共同的字段,称为引用,其中包含一个标识符。
我想匹配具有以下内容的文档
“作者”:来自论文集“细胞类型”的“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询问?
这有效:
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)