PyMango выдает ошибку "Son"

При изучении MangoDB на Python с пакетом PyMango у меня возникает ошибка при следовании руководству по началу работы с веб-сайта MangoDB здесь.

Вот код, с которым у меня проблема

cursor = db.inventory.find({"size": SON([("h", 14), ("w", 21), ("uom", "cm")])})

и вот сообщение об ошибке, которое я получаю:

NameError Traceback (последний вызов был последним) 1 cursor = db.inventory.find( 2 {"size": SON([("h", 14), ("w", 21), ("uom", "cm"))])})

NameError: имя 'SON' не определено

Я успешно выполнил все части от начала до этой строки, и даже я могу запустить код позже, но не этот конкретный запрос.

После небольшого поиска в Google я нашел этот пост, который объясняет SON, но не сужается до устранения неполадок.

На случай, если эта информация поможет, я запускаю этот код на Mac OS 10.13, Anaconda 1.8.1, с Jupyter. Я протестировал оба Python 2.7 и 3.6, чтобы убедиться, что с библиотеками Python все в порядке. Все соответствующие пакеты, запрашиваемые в руководстве, устанавливаются через Jupyter.

1 ответ

Используйте bson.son.SON вместо SON

Итак, полный рабочий пример:

cursor = db.inventory.find({"size": bson.son.SON([("h", 14), ("w", 21), ("uom", "cm")])})

Другими словами, это была проблема пространства имен, которая не была должным образом объяснена в документации MongoDB.

Другие вопросы по тегам