Как передать список Python в качестве аргумента области видимости для функции pymongo map_reduce? - PullRequest
0 голосов
/ 16 мая 2019

Я искал на разных форумах, но не нашел точного ответа. Документация по 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 здесь. Это может быть проблема, я думаю. Но нужно все равно знать, как исправить этот код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...