首页 > 解决方案 > 在 Python 中的 dict 内的列表中搜索 - Pymongo

问题描述

希望每个人都做得很好。

我使用 Mongodb 存储了具有以下结构的数据:

{'_id': ObjectId('5f788e29d55317c9cedf2'), 'num': '5512', 'person': [['John', 'Leader'], ['Mary', 'Follower']], 'valid': True}

我正在尝试在键“person”中搜索字符串,但到目前为止没有成功。

这是我正在使用的代码:

name = "John"
rgx = re.compile('.*(%s).*'%name, re.IGNORECASE)
selection = db.collection.find({"person": rgx})

但它每次都返回空。

关于为什么以及我做错了什么的任何想法?

非常感谢!

标签: pythonmongodbfindpymongo

解决方案


我建议您更改数据模型,否则您的查询将是一个痛苦的世界。但如果你不能,这个查询可以使用$elemMatch操作符工作:

print(list(db.mycollection.find({'person': {'$elemMatch': {'$elemMatch': {'$in': ['John']}}}})))

推荐阅读