猿问

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

我在 MongoDB 集合中有一组 JSON,它们由 webhooks 接收,我无法控制它,并且一组元素与另一组元素不同。我能够检索那些对所有其他数据具有相同键的元素。但我需要检索这些数据,无论它是否存在于其他文档中。附上 MongoDB 中存在的值的图片。

http://img.mukewang.com/6447967700019ebb05930723.jpg

我正在使用下面的代码将 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 以表格形式在前端呈现相同的数据


慕哥6287543
浏览 94回答 1
1回答

aluckdog

如果您不确定返回的记录是否包含特定键,那么您应该使用内置.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')
随时随地看视频慕课网APP

相关分类

Python
我要回答