Разница между php и python mongodb адаптером

0

У меня есть код в 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?

Теги:
pymongo

1 ответ

0
Лучший ответ

Похоже, что вы сохранили некоторые данные в MongoDB, которые PyMongo считает поврежденными, но драйвер PHP этого не делает. Если возможно, используйте "mongodump", чтобы сбросить только оскорбительный документ или как можно меньше документов и приложить его к новому отчету об ошибке. Когда вы описываете проблему, сообщите нам, как вы сохранили данные: какую версию драйвера, какой язык программирования, какой код вы написали для создания документа. Зарегистрируйтесь и нажмите "Создать проблему" на странице https://jira.mongodb.org/browse/PYTHON

Ещё вопросы

Сообщество Overcoder
Наверх
Меню