gpt4 book ai didi

python - 如何使用 python 脚本从 mongoDB 检索数组中的子文档

转载 作者:行者123 更新时间:2023-12-01 04:52:37 26 4
gpt4 key购买 nike

我对 python 和 mongoDB 很陌生,需要完成这项任务。

我有一个包含类似于下面示例的文档的集合。

{
"_id" : 1900123,
"name" : "AAAAA BBBB",
"scores" : [
{
"type" : "exam",
"score" : 44.51211101958831
},
{
"type" : "quiz",
"score" : 0.6578497966368002
},
{
"type" : "projectwork",
"score" : 93.36341655949683
},
{
"type" : "projectwork",
"score" : 49.43132782777443
}
]
}

我正在尝试在 python 脚本中读取这个集合。我无法从子文档中检索分数

cursor = students.find()

for doc in cursor:
score1=doc["scores.2.score"];
print("score1=",score1);

我试图找到每个学生项目作业的最低分数,但我无法使用索引“scores.2.score”检索分数。

需要一些帮助来理解检索方法。

最佳答案

pymongo 的 find 方法内部使用 db.collections.find它实际上返回光标。当您迭代光标时,您将获得各个文档。返回的文档将在 Python 中表示为字典。因此,在本例中,doc 是一本字典。当你这样做时

doc["scores.2.score"]

您正在尝试获取与 doc 字典中的键 scores.2.score 相对应的项目。但正如您从问题中显示的结构中看到的那样,没有名为 scores.2.score 这样的键。事实上,当你这样做时

doc["scores"]

你会得到

[
{
"type": "exam",
"score": 44.51211101958831
},
{
"type": "quiz",
"score": 0.6578497966368002
},
{
"type": "projectwork",
"score": 93.36341655949683
},
{
"type": "projectwork",
"score": 49.43132782777443
}
]

这是一个列表,要从中获取第二个元素,您需要这样做

doc["scores"][2]

它会给你字典

    {
"type": "projectwork",
"score": 93.36341655949683
}

并要访问其中的分数,您将这样做

doc["scores"][2]["score"]

这实际上会给你

93.36341655949683.

关于python - 如何使用 python 脚本从 mongoDB 检索数组中的子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28090191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com