Я искал на разных форумах, но не нашел точного ответа. Документация по Pymongo очень плохая, когда дело доходит до bson.code, без примеров.
На самом деле я хочу передать переменную типа списка Python, например, в аргумент области действия функции map_reduce.
Вот мой код Python:
import pymongo
from pymongo import MongoClient
from bson.code import Code
client = MongoClient('mongodb://localhost/mydb')
db = client['mydb']
stopwords = ["The", "is", "at"]
mapper = Code("""
function map() {
// Some code here for mapper function....
}
""")
reducer = Code("""
function reduce(key, values) {
// Some code here for reducer function...
}
""")
Наконец, позвоните в mapreduce
output_collection = db.MediaSummary.map_reduce(
mapper, reducer, 'SearchWords',
scope = {
"stop-words": stopwords # This is line 91
}
)
Это дает мне следующую ошибку при выполнении:
Traceback (most recent call last):
File "e:/Scripts/Python/VideoData_SearchWords_MapReduce.py", line 91, in <module>
"stop-words": stop_words
File "C:\Users\Faisal\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\collection.py", line 2773, in map_reduce
user_fields=user_fields)
File "C:\Users\Faisal\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\collection.py", line 252, in _command
user_fields=user_fields)
File "C:\Users\Faisal\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\pool.py", line 584, in command
user_fields=user_fields)
File "C:\Users\Faisal\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\network.py", line 158, in command
parse_write_concern_error=parse_write_concern_error)
File "C:\Users\Faisal\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\helpers.py", line 155, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: exception: SyntaxError: Unexpected identifier
Я не знаю, как использовать bson.code здесь. Это может быть проблема, я думаю. Но нужно все равно знать, как исправить этот код?