Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果同一集合具有不同于python的元素,则无法从MongoDB检索数据_Python_Python 3.x_Mongodb_Flask_Pymongo - Fatal编程技术网

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

如果同一集合具有不同于python的元素,则无法从MongoDB检索数据,python,python-3.x,mongodb,flask,pymongo,Python,Python 3.x,Mongodb,Flask,Pymongo,我在MongoDB集合中有一组JSON,这些JSON是由webhooks接收的,我无法控制这些JSON,而且一组的元素对于另一组不会相同。我能够检索那些对所有其他数据具有相同密钥的元素。但我需要检索这些数据,而不管它是否存在于其他文档中。附上MongoDB中存在的值的图片 我使用下面的代码将Webhook插入MongoDB @app.route('/webhook', methods=['POST', 'GET']) def respond(): collection10 = db[

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

我使用下面的代码将Webhook插入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")
假设我尝试检索“\u id”,我可以很容易地检索,因为两个数据都有“\u 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)
对于上面的代码,我得到一个错误

KeyError:“名称”

如果我以与上述相同的方式检索“_id”,它将被检索

预期结果:我需要检索嵌套数据,不管它是否存在于其他数据中。如果有任何其他方法可以在HTML页面中以表格的形式显示特定数据,那就太好了


目的一旦获得单个数据,我可以使用Jinja在前端以表的形式呈现相同的数据

如果您不确定返回的记录是否包含特定的键,那么您应该使用,与使用方括号引用不同,如果键不存在,则默认情况下返回无。这将避免您看到的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')

通过上述方式,我只能访问主元素。如果我想访问嵌套元素,也就是说,在上述情况下,我想访问[data][geofence_metadata][name]的值,该怎么办。如果只嵌套了2个元素,我就能够访问嵌套的元素,即集合中的I。find({}):I['location']['coordinates']如果是另一个问题,请使用相关标记打开另一个问题。