PyMongo:BSON到JSON dict转换(转储返回一个JSON字符串)

时间:2016-09-26 14:44:44

标签: python json mongodb pymongo bson

使用pymongo客户端

从MongoDB获取记录的片段
from bson.json_util import dumps

cursor = db.collections.find({"Test": "Sample"})

for msg in cursor:
    json_msg = dumps(msg)

但是,json_msg的类型为string。有没有办法获得可以在类似dict的东西中遍历的JSON对象?我想在遍历它们时处理检索到的JSON对象。

我尝试了json.loads(json_msg),但是再次将json_msg转换回BSON格式。

编辑:我不打算只打印(这可以通过打印字符串);但是,要迭代并处理JSON对象。

1 个答案:

答案 0 :(得分:4)

using System; using System.Collections.Generic; using System.Linq; namespace test { public class Guy { private int m_ID; private int m_LifeExpectancy; private bool m_Living; public int ID { get { return m_ID; } set { m_ID = value; } } public int LifeExpectancy { get { return m_LifeExpectancy; } set { m_LifeExpectancy = value; } } public bool Living { get { return m_Living; } set { m_Living = value; } } public Guy(int id, int lifeExpectancy, bool living) { ID = id; LifeExpectancy = lifeExpectancy; Living = living; } } public class MyFactory { public IList<Guy> MakeSomeGuys(int howManyGuys) { IList<Guy> localGuys = new List<Guy>(); for (int i = 0; i <= howManyGuys; i++) { int id = i; int lifeExpectancy = 80; bool alive = true; localGuys.Add(new Guy(id, lifeExpectancy, alive)); Console.WriteLine("Made a new Guy {0}", id); } return localGuys; } } public class program { public void Main() { MyFactory mf = new MyFactory(); IList<Guy> guys = mf.MakeSomeGuys(5); //How do I access a specific object as well as its parameters? (Accessing from the list "Guys".) int GetFirstGuyId = guys.FirstOrDefault().ID; //LEARN LINQ //How do I access an object from this list in another class? (Not that I absolutely need to, I'm curious) //you need to learn about object oriented encapsulation for better understanding. //Can I search for an object in a list by using its parameters? (As opposed to doing something like...humanPopulation[number]) Guy guyById = guys.Where(g => g.ID == 5).FirstOrDefault(); // returns the first match (need to learn lambda expression) //Should I create a new list for objects that have had their parameters modified? (As opposed to leaving it in the original list) // you need to learn about passing values by value / reference (by reference you already changing the original!). //Is it possible to remove items from a list? (Just in general, is that a thing people do? if so, why?) //yes guys.Remove(guyById); } } } 返回的值已经是Python dict,您可以迭代它。 collections.find会将其转换为字符串;所以不要转储它,只需使用它。