如何使用 python 脚本从 mongoDB 检索数组中的子文档
How to retrieve sub documents in a Array from mongoDB using python script
我对 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
实际上是 returns 游标。当您迭代游标时,您将获得单个文档。返回的文档将在 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
}
并在其中访问 score
,您需要
doc["scores"][2]["score"]
这实际上会给你
93.36341655949683.
我对 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
实际上是 returns 游标。当您迭代游标时,您将获得单个文档。返回的文档将在 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
}
并在其中访问 score
,您需要
doc["scores"][2]["score"]
这实际上会给你
93.36341655949683.