MongoDB watch () вернет JSON - PullRequest
       60

MongoDB watch () вернет JSON

0 голосов
/ 13 июля 2020

Я разрабатываю конвейер от MongoDB до AWS S3. Я использую метод Mon go watch () для потоковой передачи событий из журнала (с pymon go).

Проблема в том, что возвращенные события не могут быть преобразованы в JSON, поскольку они удерживайте объекты Mon go в значениях, например:

{'_id': ObjectId('5f0c6cf7200000aacdsertee4ac')}

Поскольку значение не заключено в кавычки, строку нельзя превратить в JSON.

Любым способом сделать так, чтобы метод watch () возвращал строки? или другой способ решить эту проблему?

1 Ответ

0 голосов
/ 14 июля 2020

Это решение, которое я получил:

def bson_ser(x):
if isinstance(x, datetime.datetime):
    return x.isoformat()
elif isinstance(x, bson.timestamp.Timestamp):
    return x.as_datetime().isoformat()
elif isinstance(x, bson.objectid.ObjectId):
    return str(x)
else:
    raise TypeError(x)

with db.watch() as stream:
    for event in stream:
        data = json.dumps(event, default=bson_ser)
...