【发布时间】:2017-06-18 23:22:01
【问题描述】:
我有两个收藏,一个模型和一个论文收藏。我需要能够匹配他们两个的字段。它们有一个共同的字段,称为引用,其中包含一个标识符。
我想匹配具有以下内容的文档
'authors' : 来自论文集的'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)
我没有得到任何结果。
我注意到,如果我不调用 match 参数中的 cellmodels.celltypes,它会找到与 Migliore M 匹配的论文。我怎样才能让它也匹配模型中的 celltype:'Hippocampus CA3 pyramidal cell'此查询中的集合?
【问题讨论】:
-
你只需要在
$match之前{'$unwind': '$cellmodels'}。 -
不完全确定 unwind 有什么作用,但我能够让它工作
-
查找返回数组,因此展开会将数组转换为对象,您可以将比较应用于嵌入字段。