我在尝试使用的MongoDB和瓶(使用pymongo驱动程序)的Web服务。 用“_id”字段包含查询到数据库返回,当然文件。 我不想发送给客户,所以我怎么去除呢?
这里有一个瓶路线:
@app.route('/theobjects')
def index():
objects = db.collection.find()
return str(json.dumps({'results': list(objects)},
default = json_util.default,
indent = 4))
这将返回:
{
"results": [
{
"whatever": {
"field1": "value",
"field2": "value",
},
"whatever2": {
"field3": "value"
},
...
"_id": {
"$oid": "..."
},
...
}
]}
我认为这是一本字典,并返回它之前,我可能只是删除元素:
del objects['_id']
但是,它返回一个类型错误:
TypeError: 'Cursor' object does not support item deletion
因此,这不是一本字典的事,但我有每个结果作为字典遍历。 所以我尝试这样做,与此代码:
for object in objects:
del object['_id']
每个对象字典看起来我也喜欢现在的方式,但对象光标是空的。 所以我尝试创建一个新的字典,并从每个删除_id后,添加到新的字典,瓶将返回:
new_object = {}
for object in objects:
for key, item in objects.items():
if key == '_id':
del object['_id']
new_object.update(object)
这正好返回与一级钥匙,别无其他的字典。
因此,这是一个排序标准的嵌套字典的问题,但我也震惊的MongoDB没有一个方法可以轻松地处理这。
在MongoDB的文档说明了可以排除与_id
{ _id : 0 }
但是这并没有与pymongo。 该Pymongo文件解释说,你可以列出你希望返回的字段,但“(‘_id’将始终包含)”。 真的吗? 请问有没有办法解决这个? 有什么简单而愚蠢,我俯瞰这里?