У меня странная проблема с функцией find_one Pymongo. У меня есть db, называемый «cluster_db», размещенный на моей локальной машине. У него есть коллекция под названием «кластеры». Когда я запускаю запрос в оболочке mongo, я получаю следующий вывод.PyMongo find_one не работает
> db
cluster_db
> db.clusters.findOne({_id:-8488068664808428000})
{
"_id" : NumberLong("-8488068664808427924"),
"members" : [
{
"participationCoeff" : 1,
"tweetID" : NumberLong("-8488068664808427924")
}
]
}
>
Теперь, во время моей фазы инициализации коды У меня есть константа, определенная в модуле «dbutil», как это:
DB_CONNECTION = MongoClient('localhost', 27017)
CLUSTER_DB_HANDLE = DB_CONNECTION['cluster_db']
После этого, в функции, я делаю следующий вызов.
dbutil.CLUSTER_DB_HANDLE.clusters.find_one({'_id':clusterID})
Однако вышеуказанный вызов всегда возвращает «Нет». Если я перейду в MongoShell и запустил тот же самый запрос с тем же самым идентификатором clusterID, я вижу результат.
Я знаю, что это странная ошибка, но почему-то я не могу понять, почему это происходит. В другом месте я могу успешно совершать вызовы в коллекцию кластеров в cluster_db, используя dbutil.CLUSTER_DB_HANDLE.clusters
В командной строке '' id возвращаемого документа действительно не соответствует '_id' в' findOne'? – JohnnyHK
Да! Проблема заключается в том, что _id хранится как NumberLong(), но все же я конвертирую свой идентификатор clusterID в длинный, используя метод python long, прежде чем использовать find_one(). Но все же это не работает! – VaidAbhishek
Так что конкретно вы пытаетесь сделать в Python, который не работает? – JohnnyHK