I have started using Pymongo recently and now I want to find the best way to remove $oid in Response
When I use find
:
result = db.nodes.find_one({ "name": "Archer" }
And get the response:
json.loads(dumps(result))
The result would be:
{
"_id": {
"$oid": "5e7511c45cb29ef48b8cfcff"
},
"about": "A jazz pianist falls for an aspiring actress in Los Angeles."
}
My expected:
{
"_id": "5e7511c45cb29ef48b8cfcff",
"about": "A jazz pianist falls for an aspiring actress in Los Angeles."
}
As you seen, we can use:
resp = json.loads(dumps(result))
resp['id'] = resp['id']['$oid']
But I think this is not the best way. Hope you guys have better solution.
You can take advantage of aggregation:
Here, with
$addFields
I add a new fieldId
in which I introduce the value ofoid
. Then I make a projection where I eliminate the_id
field of the result. After, as I get a cursor, I turn it into a list.It may not work as you hope but the general idea is there.