У меня есть код в php, который читает пример записи из mongodb:
<?php
$client = new MongoClient("mongodb://localhost:27017");
$db = $client->foo;
$collection = $db->bar;
$item = $collection->findOne();
var_dump($item);
И аналогичный код в python:
import pymongo
client = pymongo.MongoClient('localhost', 27017)
db = client.foo
collection = db.bar
item = collection.find_one()
print(item)
Когда я запускаю php-скрипт, я получаю ожидаемый результат:
array(11) {
'_id' => class MongoBinData#6 (2) {
public $bin => string(10) "somestring"
public $type => int(3)
}
'a' => double(62051.444165621)
'b' => int(974386)
'c' => string(10) "some string"
... some int, float and string fields ...
'tags' => array(0) {}
}
Но, ошибка возврата скрипта python:
Traceback (most recent call last):
File "example.py", line 5, in <module>
item = collection.find_one()
File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 724, in find_one
for result in cursor.limit(-1):
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1058, in next
if len(self.__data) or self._refresh():
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1002, in _refresh
self.__uuid_subtype))
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 940, in __send_message
self.__compile_re)
File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 117, in _unpack_response
compile_re)
bson.errors.InvalidBSON: invalid length or type code
Почему я могу читать данные в php-скрипте и не могу читать данные на python? Можно ли читать эти данные в python?
Похоже, что вы сохранили некоторые данные в MongoDB, которые PyMongo считает поврежденными, но драйвер PHP этого не делает. Если возможно, используйте "mongodump", чтобы сбросить только оскорбительный документ или как можно меньше документов и приложить его к новому отчету об ошибке. Когда вы описываете проблему, сообщите нам, как вы сохранили данные: какую версию драйвера, какой язык программирования, какой код вы написали для создания документа. Зарегистрируйтесь и нажмите "Создать проблему" на странице https://jira.mongodb.org/browse/PYTHON