小编ddw*_*ddw的帖子

从Pymongo结果中删除_id元素

我正在尝试使用MongoDB和Flask(使用pymongo驱动程序)创建Web服务.当然,对数据库的查询返回包含"_id"字段的文档.我不想将其发送给客户端,所以我该如何删除它?

这是一个Flask路线:

@app.route('/theobjects')
def index():
    objects = db.collection.find()
    return str(json.dumps({'results': list(objects)}, 
        default = json_util.default,
        indent = 4))
Run Code Online (Sandbox Code Playgroud)

返回:

{
"results": [
    {
        "whatever": {
            "field1": "value", 
            "field2": "value", 
        }, 
        "whatever2": {
            "field3": "value"
        },
        ...
        "_id": {
            "$oid": "..."
        }, 

    ...
    }
]}
Run Code Online (Sandbox Code Playgroud)

我以为它是一本字典,我可以在返回之前删除该元素:

del objects['_id']
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个TypeError:

TypeError: 'Cursor' object does not support item deletion
Run Code Online (Sandbox Code Playgroud)

所以它不是字典,而是我必须将每个结果作为字典迭代.所以我试着用这段代码做到这一点:

for object in objects:
    del object['_id']
Run Code Online (Sandbox Code Playgroud)

每个对象字典看起来都是我现在喜欢的方式,但是对象光标是空的.所以我尝试创建一个新的字典,并在从每个字典中删除_id后,添加到Flask将返回的新字典:

new_object = {}
for object in objects:
    for key, item in objects.items():
        if key == '_id':
            del …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

25
推荐指数
1
解决办法
2万
查看次数

标签 统计

mongodb ×1

pymongo ×1

python ×1