【问题标题】:Iterate through a PyMongo collection遍历 PyMongo 集合
【发布时间】:2018-02-19 05:13:03
【问题描述】:

我需要遍历我的集合并从具有相同名称的键中获取所有值。

[
    {
        "_id": {
            "$oid": "59b3824b44e96c07dceba8de"
        },
        "place": "Yellow Stone",
        "time": "2017-09-08",
        "user": "user@gmail.com",
        "user_go": "yes"
    },
    {
        "_id": {
            "$oid": "59b4ea8644e96c37c43be33a"
        },
        "place": "Yosemite",
        "time": "2017-11-10",
        "user": "user@gmail.com",
        "user_go": "yes"
    },
    {
        "_id": {
            "$oid": "59b4ea9144e96c37c43be344"
        },
        "place": "Devils Tower",
        "time": "2017-09-10",
        "user": "user@gmail.com",
        "user_go": "yes"
    },
]

我想知道如何根据用户名从集合中获取所有地名。我试过做类似的事情:

data = db.voting.find({'user' : 'user@gmail.com'})
data = dumps(data)

parsed = json.loads(data)

for x in parsed:
     for key,value in x.items():
         print("values: {}".format(value))

您可能会猜到我得到了所有键的所有值,如何只获取我想要的键的值?我也尝试过place = parsed[0]['place'],但它只返回第一个“位置”值而不是所有值。我确定我遗漏了一些明显的东西,但这证明我很难理解。

我也在阅读文档并找到cursour.forEach,但找不到如何使用它的好例子。

【问题讨论】:

  • 或者你只使用distinct()。即db.voting.distinct('place', {'user' : 'user@gmail.com'})。它返回“不同”地点的列表。

标签: python dictionary indexing iteration pymongo


【解决方案1】:

x['place'] 是你要找的。​​p>

for x in parsed:
     place = x['place']
     ... # do something with place

【讨论】:

  • 完美,时间到了我会接受的。我觉得自己像个白痴,这太容易了。感谢您的帮助!
  • @BrettJ 每个初学者都会遇到 :)
猜你喜欢
  • 2012-04-05
  • 2017-04-15
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 2011-01-30
相关资源
最近更新 更多