Alguns bancos de dados, como o Sqlite3, permitem definir funções de conversor e adaptador para que você possa recuperar texto como str em vez de unicode . Infelizmente, o MongoDB não fornece essa opção para nenhum dos tipos comumente necessários, como str, decimal ou datetime:
- http://api.mongodb.org/python/current/tutorial.html#a-note-on-unicode-strings
- http://api.mongodb.org/python/current/faq.html#how-can-i-store-decimal-decimal-instances
- http://api.mongodb.org/python/current/faq.html#how-can-i-save-a-datetime-date-instance
Tendo eliminado as opções do Mongo, resta escrever código Python para fazer a conversão após os dados serem recuperados. Você pode escrever uma função recursiva que percorre o resultado para converter cada campo.
Como uma alternativa rápida e suja, aqui está um pequeno truque que pode ser útil:
>>> import json, ast
>>> r = {u'name': u'A', u'primary_key': 1}
>>> ast.literal_eval(json.dumps(r))
{'name': 'A', 'primary_key': 1}