Я использую лямбда-функцию, Python 3.6 и Mongodb Atlas. В mongodb у меня есть одна коллекция ниже, как эта. Профиль имени коллекции. ниже как структура коллекции.
"_id" : ObjectId("5db234df92b0ce00016932f3")
"username" : "testing"
"channel" : [ "abc", "efg", "cde", "xyz" ]
"about" : "this is a test case"
у нас есть несколько строк, аналогичных приведенным выше. Теперь я использую Python, я пишу лямбда-функцию, чтобы найти строки, совпадающие с буквой в массиве каналов. Найдите лямбда-функцию ниже.
profile = db.profile
name = event['cname']
ch = list(profile.aggregate([{
"$match" : { "username" : "testing" }
},
{
"$project" : {
"channel" : 1
}
}
]))
ch1 = json.loads(json.dumps(ch, default=json_util.default))
ch2 = [document["channel"] for document in ch1]
new_list = []
for i in ch2:
if(re.findall(name, i)):
new_list.append(i)
return new_list
Я передал "cname": "c" в событии. но я получаю ошибку, как это.
Response:
{
"errorMessage": "expected string or bytes-like object",
"errorType": "TypeError",
"stackTrace": [
[
"/var/task/lambda_function.py",
51,
"lambda_handler",
"if(re.findall(search, i)):"
],
[
"/var/lang/lib/python3.6/re.py",
222,
"findall",
"return _compile(pattern, flags).findall(string)"
]
]
}
Я пробовал также с re.search, но я получаю то же самое, мне нужен вывод, как это ниже.
Input: "cname" : "c"
output: "abc"
"cde"
Можете ли вы помочьмне с решением, спасибо заранее.