请参考以下解答:
对于具有嵌套数组对象的集合,可以使用$符号访问内嵌数组的元素。因此,有两个集合A和B,其中一个嵌套在另一个中,可以使用以下代码更新它们:
db.A.update({"_id":Aid},{"$set":{"B.$.field":value}})
db.B.update({"A._id":Aid},{"$set":{"A.$.field":value}})
在第一句中,$符号表示要更新嵌套在A集合中的B数组的元素。在第二个语句中,$符号表示要更新嵌套在B集合中的A数组的元素。请注意,Aid是A集合中的文档的_id字段。也可以使用其他字段来更新。
这是一个示例:有一个集合名为students,它包含一个名为
as
signments的嵌套数组对象。想要更新某个学生的分数,可以使用以下代码:
db.students.update({"_id":student_id, "
as
signments.name":
as
signment_name}, {"$set":{"
as
signments.$.score":new_score}})
其中,$符号表示要更新
as
signments数组中匹配到的元素。student_id和
as
signment_name是要更新的数据的相关字段,new_score是要更新的值。