mongodb - MongoDB watch() 返回 JSON
问题描述
我正在开发从 MongoDB 到 AWS S3 的管道。我正在使用 Mongo watch() 方法从日志中流式传输事件(使用 pymongo)。
问题是返回的事件无法转换为 JSON,因为它们在值中包含 Mongo 对象,例如:
{'_id': ObjectId('5f0c6cf7200000aacdsertee4ac')}
由于该值不在引号中,因此无法将字符串转换为 JSON。
有什么方法可以让 watch() 方法返回字符串?或另一种方法来解决这个问题?
解决方案
这是我得到的解决方案:
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)
推荐阅读
- c - 客户端/多线程服务器需要响应C中的所有客户端
- sql-server - ADO 再次执行 SQL Server 不报告参照完整性约束
- swift - 当我在 SwiftUI 中添加 NavigationLink 时,它会将内容带入后台
- python - 大熊猫中的 Iloc 和重命名
- git - 在 Web 应用程序中使用 git SSH,对服务器上的文件系统没有写入权限
- laravel - vue-izitoast 函数返回值
- php - CodeIgniter:不允许直接脚本访问
- amazon-cognito - 自定义 Cognito 托管 UI
- google-apps-script - replaceText 在一个实例中工作,但在另一个实例中不工作
- intellij-idea - 使用 IntelliJ IDE 进行本地开发,但从远程机器进行测试