将MongoDB查询转换为JSON

问题描述 投票:0回答:1

我是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 json mongodb
1个回答
0
投票

您从游标进行迭代得到的是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))
© www.soinside.com 2019 - 2024. All rights reserved.