[英]Can't iterate over mongodb array
我們正在通過'_id'
在數據庫中尋找用戶
"_id": "6381e7c6bf8892cf05c7c798",
"username": "Teacher",
"email": "teacher@gmail.com",
"role": "teacher",
"avatar": "fixtures/teacher.jpg",
"token": "KNuSF7sscU3EJsMetUFKi",
"authentication": true,
"myCourses"
和
有必要使用'aggregate'
從數組中獲取合適的 object ,我們通過'course'
字段找到它並更改其中的'status'
"myCourses": [
{
"course": "6381e7c6bf8892cf05c7c7b3",
"status": true,
"_id": "6381e80f12d633b2e6c35fbd"
},
{
"course": "6381edab4f212193837ab575",
"status": true,
"_id": "6381edc54f212193837ab57c"
}
],
我嘗試了以下方法
const test = await User.find({ _id: userId, myCourses: {$elemMatch: {course: courseId}} })
const test = await User.find(userId, { courseId: {$in : myCourses} })
const updateCourseStatus = user.myCourses.find(elem => elem.course.toString() === courseId)
最后一種方法有效,但我認為它不正確
使用"arrayFilters"
”給定"myCourses.course"
更改"status"
的另一種選擇是:
db.user.update({
"_id": userId
},
{
"$set": {
"myCourses.$[elem].status": newStatus
}
},
{
"arrayFilters": [
{
"elem.course": courseId
}
]
})
在mongoplayground.net上試用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.