Pymongo 聚合 $in 列表
Pymongo aggregate $in list
我正在尝试在我的 collection 中获取一些特定文档。我想要的文档在我的数据库的一个字段 (display_url) 中有一个子字符串,并且还查找在另一个字段 (edge_media_to_caption.edges.node.text) 中必须具有的一些关键字。第一个字段是 url 所以我需要使用通配符,唯一可行的方法似乎是使用此信号:.*
但是我在比赛的第二部分遇到了问题,我认为它不起作用。第二个字段是一个字符串字段,文本>
所以我需要获取包含我给出的正则表达式的文档(我单独测试了这部分并且正在运行)并且至少包含 ['.corona.','.virus.','.virus.','.covid.','.pandemia.','.pândemia.'] 在文中。
client = MongoClient('localhost', 27017)
db = client.basededados
collection = getattr(db, pdados)
pipeline= [{'$project': {"_id": True,
'legenda': '$edge_media_to_caption.edges.node.text',
'data': '$taken_at_timestamp',
'hash': '$tags',
'id' :'$display_url'}},
{'$match': {'$and': [{"id": {"$regex": '/%s/' % nitem[0]}},
{"legenda": {"$in": ['.*corona.*','.*virus.*','.*vírus.*','.*covid.*','.*pandemia.*','.*pândemia.*']}}
]}}
]
要通配符匹配一个字符串,use a regex。纯 Mongo:
{$in: [/\.corona\./, ...]}
在pymongo中,你可以使用原生Python正则表达式:
import re
...
{'$in': [re.compile(r'\.corona\.'), ...]}
我正在尝试在我的 collection 中获取一些特定文档。我想要的文档在我的数据库的一个字段 (display_url) 中有一个子字符串,并且还查找在另一个字段 (edge_media_to_caption.edges.node.text) 中必须具有的一些关键字。第一个字段是 url 所以我需要使用通配符,唯一可行的方法似乎是使用此信号:.*
但是我在比赛的第二部分遇到了问题,我认为它不起作用。第二个字段是一个字符串字段,文本>
所以我需要获取包含我给出的正则表达式的文档(我单独测试了这部分并且正在运行)并且至少包含 ['.corona.','.virus.','.virus.','.covid.','.pandemia.','.pândemia.'] 在文中。
client = MongoClient('localhost', 27017)
db = client.basededados
collection = getattr(db, pdados)
pipeline= [{'$project': {"_id": True,
'legenda': '$edge_media_to_caption.edges.node.text',
'data': '$taken_at_timestamp',
'hash': '$tags',
'id' :'$display_url'}},
{'$match': {'$and': [{"id": {"$regex": '/%s/' % nitem[0]}},
{"legenda": {"$in": ['.*corona.*','.*virus.*','.*vírus.*','.*covid.*','.*pandemia.*','.*pândemia.*']}}
]}}
]
要通配符匹配一个字符串,use a regex。纯 Mongo:
{$in: [/\.corona\./, ...]}
在pymongo中,你可以使用原生Python正则表达式:
import re
...
{'$in': [re.compile(r'\.corona\.'), ...]}