Kit*_*Kit 6 pymongo pymongo-3.x flask-pymongo
我最近开始使用 Pymongo,现在我想找到删除 Response 中 $oid 的最佳方法
当我使用时find:
result = db.nodes.find_one({ "name": "Archer" }
Run Code Online (Sandbox Code Playgroud)
并得到响应:
json.loads(dumps(result))
Run Code Online (Sandbox Code Playgroud)
结果将是:
{
"_id": {
"$oid": "5e7511c45cb29ef48b8cfcff"
},
"about": "A jazz pianist falls for an aspiring actress in Los Angeles."
}
Run Code Online (Sandbox Code Playgroud)
我的预期:
{
"_id": "5e7511c45cb29ef48b8cfcff",
"about": "A jazz pianist falls for an aspiring actress in Los Angeles."
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我们可以使用:
resp = json.loads(dumps(result))
resp['id'] = resp['id']['$oid']
Run Code Online (Sandbox Code Playgroud)
但我认为这不是最好的方法。希望大家有更好的解决方案。
您可以利用聚合:
result = db.nodes.aggregate([{'$match': {"name": "Archer"}}
{'$addFields': {"Id": '$_id.oid'}},
{'$project': {'_id': 0}}])
data = json.dumps(list(result))
Run Code Online (Sandbox Code Playgroud)
在这里,$addFields我添加了一个新字段Id,其中介绍了 的值oid。然后我进行投影,消除_id结果的场。之后,当我得到光标时,我将其变成一个列表。
它可能不会像你希望的那样工作,但总体思路是存在的。