我有两个系列,一个模型和一个论文集。我需要能够匹配两者中的字段。它们有一个共同的字段叫做引用,它包含一个标识符。
我希望匹配具有以下内容的文档
'作者':来自论文集的'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锥体细胞'此查询中的集合?
答案 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)