Я реализую это руководство Как ускорить запросы регулярных выражений MongoDB с коэффициентом до 10 , и я использую запрос, указанный в конце
db.movies.find({
$and:[{
$text: {
$search: "Moss Carrie-Anne"
}},{
cast: {
$elemMatch: {$regex: /Moss/, $regex: /Carrie-Anne/}}
}]}
);
Проблема, в которой я застрял, состоит в том, как мне сгенерировать подзапрос
$elemMatch: {$regex: /Moss/, $regex: /Carrie-Anne/}
программным способом с python
Мой код пока
def regexGen(s):
d={}
for word in s.split(" "):
d["$regex"]= "/"+word+"/" # this will of course save only the last value into the dict
return (d)
query= {
"$and":[{
"$text": {
"$search": "Moss Carrie-Anne"
}},{
"cast": {
"$elemMatch": regexGen("Moss Carrie-Anne")}
}
]
}
print (query)
#actual
# {'$and': [{'$text': {'$search': 'Moss Carrie-Anne'}}, {'cast': {'$elemMatch': {'$regex': '/Carrie-Anne/'}}}]}
#expected
# {'$and': [{'$text': {'$search': 'Moss Carrie-Anne'}}, {'cast': {'$elemMatch': {'$regex': '/Carrie-Anne/'}, {'$regex': '/Moss/'} }}]}
Я, очевидно, отсутствуетчто-то здесь, но не в состоянии разобраться