我有一个CrossRef 作品记录的数据集存储在 MongoDB 中的一个集合works
中,我正在使用 Python 应用程序来查询这个数据库。
我正在尝试根据一位作者的姓名查找文档。删除无关的细节,文档可能如下所示:
{'DOI':'some-doi',
'author':[{'given': 'Albert','family':'Einstein',affiliation:[]},
{'given':'R.','family':'Feynman',affiliation:[]},
{'given':'Paul','family':'Dirac',affiliation:['University of Florida']}]
}
我不清楚如何结合查询来获得阿尔伯特爱因斯坦的论文。
我在 author.family 和 author.given 上有索引,我试过:
cur = works.find({'author.family':'Einstein','author.given':'Albert'})
这将返回名为“Albert”的人的所有文档以及名为“Einstein”的人的所有文档。我可以手动过滤它,但它显然不太理想。
我也试过:
cur = works.find({'author':{'given':'Albert','family':'Einstein','affiliation':[]}})
但这没有返回(经过很长时间的延迟)。我已经尝试过有和没有“从属关系”的情况。关于查询嵌套字段有一些关于 SO 的问题,但似乎没有一个问题涉及我们在 1 个嵌套字段中寻找 2 个特定事物的情况。