我是mongoDB的新手,对python的了解并不多,我正尝试从MongoDB数据库中获取一些数据,我可以使用此代码来获取它。我的问题是:如何将结果(我在这里添加)转换为json,以便我可以将姓名,生日,生日等东西分开。
import pymongo
myclient = pymongo.MongoClient("mongodb://10.0.0.45:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["birthdays"]
myquery = { "name": "John" }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
这是在for x in mydoc:
中打印的内容
data that I get from MongoDB: {u'birthmonth': u'<month>', u'_id': ObjectId('5db3a42431f86884b0746c3e'), u'name': u'<name>', u'birthday': u'<day>', u'birthyear': u'<year>'}
当我只打印mydoc时,我得到
<pymongo.cursor.Cursor object at 0x10a1b4c90>
打印时我实际上并没有在for x in mydoc:
中得到<>,我只是添加了它们以替换实际数据。
btw我从https://www.w3schools.com/python/python_mongodb_query.asp获得了代码
您从游标进行迭代得到的是python dictionary。您无需将其转换为json,MongoDB也在使用BSON,这意味着某些字段可能无法JSON序列化,例如字段“ _id”。要获取值,请使用类似以下内容的代码:
for x in mydoc:
print(x['birthmonth'],x['_id'], x['name'], :x['birthday'], x['birthyear'])
但是如果您真的想要json,您的代码将如下所示:
import json
import pymongo
myclient = pymongo.MongoClient("mongodb://10.0.0.45:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["birthdays"]
myquery = { "name": "John" }
#because ObjectId is not JSON serializable
project = {"_id":0}
mydoc = mycol.find(myquery, project)
for x in mydoc:
print(json.dumps(x))