MongoDB v5.0.5 引用 updateMany() 中的现有字段
MongoDB v5.0.5 reference existing field in updateMany()
第一次使用 MongoDB,我遇到了一个问题,希望能提供帮助。
假设我有一个名为“students”的集合,集合中的文档结构如下:
{
"_id": ObjectId("12345"),
"Name": "Joe Bloggs",
"Class_Grade": "b"
"Homework_Grade": "c",
}
我想创建一个名为 "Grades"
的嵌入式文档,其中包含 class 和家庭作业成绩字段,并将其应用于集合中的每个文档以结束:
{
"_id": ObjectId("12345"),
"Name": "Joe Bloggs",
"Class_Grade": "b"
"Homework_Grade": "c",
"Grades": {
"Class_Grade": "b",
"Homework_Grade": "c",
}
}
我一直在尝试使用 MongoShell 中的 updateMany() 来实现此目的:
db.students.updateMany({}, {$set: {Grades: {"Class_Grade": $Class_Grade, "Homework_Grade": $Homework_grade"}}})
但是,这样做时,我收到参考错误:$Class_Grade
未定义。我尝试修改对 $students.Class_Grade
的引用并收到相同的错误。
非常感谢您的建议
您的查询有一些错误,
如果要使用内部现有字段的值,需要使用从MongoDB 4.2开始的带有聚合管道的更新,需要将更新部分包裹在attay括号中[ ],因为我添加了查询。
在要从内部字段使用的字段名称中使用引号例如:"$Class_Grade"
您使用了字段 $Homework_grade
,并且在您的文档中 G
是 Grade
中的大写,因此请尝试使用准确的字段名称 $Homework_Grade
db.students.updateMany({},
[
{
$set: {
Grades: {
"Class_Grade": "$Class_Grade",
"Homework_Grade": "$Homework_Grade"
}
}
}
])
第一次使用 MongoDB,我遇到了一个问题,希望能提供帮助。
假设我有一个名为“students”的集合,集合中的文档结构如下:
{
"_id": ObjectId("12345"),
"Name": "Joe Bloggs",
"Class_Grade": "b"
"Homework_Grade": "c",
}
我想创建一个名为 "Grades"
的嵌入式文档,其中包含 class 和家庭作业成绩字段,并将其应用于集合中的每个文档以结束:
{
"_id": ObjectId("12345"),
"Name": "Joe Bloggs",
"Class_Grade": "b"
"Homework_Grade": "c",
"Grades": {
"Class_Grade": "b",
"Homework_Grade": "c",
}
}
我一直在尝试使用 MongoShell 中的 updateMany() 来实现此目的:
db.students.updateMany({}, {$set: {Grades: {"Class_Grade": $Class_Grade, "Homework_Grade": $Homework_grade"}}})
但是,这样做时,我收到参考错误:$Class_Grade
未定义。我尝试修改对 $students.Class_Grade
的引用并收到相同的错误。
非常感谢您的建议
您的查询有一些错误,
如果要使用内部现有字段的值,需要使用从MongoDB 4.2开始的带有聚合管道的更新,需要将更新部分包裹在attay括号中[ ],因为我添加了查询。
在要从内部字段使用的字段名称中使用引号例如:
"$Class_Grade"
您使用了字段
$Homework_grade
,并且在您的文档中G
是Grade
中的大写,因此请尝试使用准确的字段名称$Homework_Grade
db.students.updateMany({},
[
{
$set: {
Grades: {
"Class_Grade": "$Class_Grade",
"Homework_Grade": "$Homework_Grade"
}
}
}
])