我是mongodb的新手,我正在使用它来存储嵌套的文档。例如。每个文档都包含每个班级的学生数组。我正在尝试更新每个阵列节点中的信息。有没有更好的方法来做到这一点,而不是一次更新每个数组元素?使用游标更新嵌套的mongodb集合
下面是我收集的记录 -
{
“_id” : “23343” ,
“class” : “Physics”,
“students”: [
{ “id” : “2412” , “name” : "Alice", “mentor” : 0 },
{ “id” : “2413” , “name” : "Bob, “mentor” : 0 },
]
}
有多个记录,这样的收藏。
我有这些课程的列表,我需要更新每条记录。例如,我让学生的数组,上面记录着更新这样的 -
{
“_id” : “23343” ,
“class” : “Physics”,
“students”: [
{ “id” : “2412” , “name” : "Alice", “mentor” : "Mark" },
{ “id” : “2413” , “name” : "Bob, “mentor” : "Jackson" },
]
}
什么是更新记录的最好方法?
我正在使用python。直觉上,我可以在课程的集合上做一个find()。我得到一个游标。我可以为每个游标做一个。我相信mongodb更新update()上的整个文档。
for record in courseCollection.find():
recordId = record['_id']
updatedList = getUpdatedStudentList(record['students'])
updatedRecord = prepareUpdatedRecord(updatedList)
courseCollection.update({'_id' : recordId}, updateList)
pymongo文档站点不会讨论update函数中的set选项。除非我使用它,否则我相信MongoDB会更新整个文档。
通过传递_id调用更新与查询选项似乎没有必要,因为我只是做了查询,并有记录的句柄。我可以以某种方式使用光标在那里做更新通过不再执行更新的查询?