【问题标题】:Converting a MongoDB query to JSON [duplicate]将 MongoDB 查询转换为 JSON [重复]
【发布时间】:2020-02-22 08:17:59
【问题描述】:

我是 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: 中的,我只是添加它们来替换实际数据。

顺便说一句,我从https://www.w3schools.com/python/python_mongodb_query.asp得到了代码

【问题讨论】:

    标签: python json mongodb


    【解决方案1】:

    从游标迭代得到的是 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))
    

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 2018-08-28
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多