第一次使用 MongoDB,我遇到了一個問題,希望得到一些幫助。
假設我有一個名為“students”的集合,集合中的檔案結構如下:
{
"_id": ObjectId("12345"),
"Name": "Joe Bloggs",
"Class_Grade": "b"
"Homework_Grade": "c",
}
我想創建一個名為的嵌入檔案"Grades",其中包含班級和作業成績欄位,并將其應用于集合中的每個檔案,最終得到:
{
"_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并收到相同的錯誤。
您的建議將不勝感激
uj5u.com熱心網友回復:
你的查詢有幾個錯誤,
如果要使用內部現有欄位的值,則需要使用從 MongoDB 4.2 開始的帶有聚合管道的更新,您需要將更新部分包裝在 attay 括號 [] 中,因為我添加了查詢。
在要從內部欄位使用的欄位名稱中使用引號:
"$Class_Grade"您使用了 field
$Homework_grade,并且在您的檔案中它G是大寫的,Grade因此請嘗試使用確切的欄位名稱$Homework_Grade
db.students.updateMany({},
[
{
$set: {
Grades: {
"Class_Grade": "$Class_Grade",
"Homework_Grade": "$Homework_Grade"
}
}
}
])
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/400719.html
下一篇:對id欄位的子集進行分片
