所以我不确定如何使用bson.json_util类将ObjectId和datetime转换为字符串。
我知道你可以使用来自pymongo游标的dumps
然后loads
,但问题出在我加载之后,我仍然有" _id"作为ObjectId和datetime作为日期时间对象。
我的代码:
all_cats = db.cats.find()
foo = dumps(all_cats)
print loads(foo)
[{
u'c': u'this is a comment',
u'd': datetime.datetime(2015, 4, 19, 7, 16, tzinfo=<bson.tz_util.FixedOffset object at 0x10cece7d0>),
u'_id': ObjectId('55329b7de73f02d1069528f5')
}]
那么如何将_id转换为&#34; _id&#34;:&#34; 55329b7de73f02d1069528f5&#34;和日期到&#34; d&#34;:&#34; 2015-04-19 07:16:00&#34; ??
非常感谢!
修改
当所有元素都转换为字符串后,我将使用Flask的jsonify返回 - 这不会抱怨&#34; _id&#34;是一个ObjectId和&#34; d&#34;是一个日期时间对象
return jsonify(loads(foo))
答案 0 :(得分:1)
这些贵重物品是Pymongo的标准。
您可以使用以下方法在Python中进行转换:
_ID使用str(object)因为是bson.objectid.ObjectId(它是一个函数而不是方法)
D使用D.strftime(&#34;%Y-%m-%d%H:%M:%S&#34;)因为是日期时间,您可以根据需要更改格式。
示例:
from pymongo import MongoClient
# making a Connection with MongoClient
client = MongoClient()
#client = MongoClient('localhost', 27017)
# getting a Database
db = client.local
# getting a Collection
test = db['foo2']
#print test
item = test.find_one()
print 'Hello %s!' % item
#example Date
d = item['birth']
dString = d.strftime("%Y-%m-%d %H:%M:%S")
print 'D: %s' % d
print 'Type D: %s' % type(d)
print 'DString: %s' % dString
print 'Type DString: %s' % type(dString)
#example _ID
id = item['_id']
idString = str(id)
print 'ID: %s' % id
print 'Type ID: %s' % type(id)
print 'IDString: %s' % idString
print 'Type IDString: %s' % type(idString)