为了账号安全,请及时绑定邮箱和手机立即绑定

如果同一集合具有来自 python 的不同元素,则无法从 MongoDB 检索数据

如果同一集合具有来自 python 的不同元素,则无法从 MongoDB 检索数据

慕哥6287543 2023-04-25 16:59:09
我在 MongoDB 集合中有一组 JSON,它们由 webhooks 接收,我无法控制它,并且一组元素与另一组元素不同。我能够检索那些对所有其他数据具有相同键的元素。但我需要检索这些数据,无论它是否存在于其他文档中。附上 MongoDB 中存在的值的图片。我正在使用下面的代码将 webhooks 插入到 MongoDB@app.route('/webhook', methods=['POST', 'GET'])def respond():    collection10 = db['webhooks']    a = request.get_json()    print(a)    collection10.insert_many(a)    return render_template("signin.html")假设我尝试检索“_id”,我可以轻松检索,因为两个数据都有“_id”。但是,如果我尝试检索那些存在于一个元素中而不存在于另一个元素中的元素,则会出现错误。我正在使用此代码来检索元素:@app.route('/webhookdisplay', methods=['POST', 'GET'])def webhooksdis():    collection10 = db['webhooks']    for i in collection10.find({}):        posts = i['name']        print(posts)    return render_template("webhooks.html", posts = posts)对于上面的代码,我得到错误键错误:'名称'如果我以与上述相同的方式检索“_id”,它将被检索。预期结果:我需要检索嵌套数据,无论它是否存在于其他数据中。如果有任何其他方法可以在 HTML 页面中以表格形式显示特定数据,那就太好了目的一旦获得个人数据,我就可以使用 Jinja 以表格形式在前端呈现相同的数据
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

如果您不确定返回的记录是否包含特定键,那么您应该使用内置.get()函数。如果键不存在,默认情况下返回 None ,这与使用方括号引用不同。这将避免您看到的 KeyError 异常。

posts = i.get('name')


if posts is None:

    # Handle logic if name doesn't exist

编辑:如果您需要嵌套字段:


name = i.get('data', {}).get('geofence_metadata', {}).get('name')


查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信