[英]Mongoose: How to extract arrays in subdocuments to a single array in the parent document
使用 Mongoose 的 Express 服务器在其路由之一中从数据库返回以下 JSON:
{
"gradeLevel": 12,
"classes": [
{
"className": "A",
"students": [
"student1", "student2","student3"
]
},
{
"className": "B",
"students": [
"student4", "student5","student6"
]
},
{
"className": "C",
"students": [
"student7", "student8","student9"
]
}
]
}
在客户端,我希望能够例如有效地检查学生是否在父文档中的任何类子文档中。 以下是我构想的解决方案,但不确定哪个是最佳实践:
students
字段。我也遇到了这个问题。 但是要解决这个问题,您需要一个名为allStudents
的单独集合,例如它的架构如下{ nameOfStudent: 'String' className: 'String' }
然后将其与子文档相应地聚合。 因此,无论您将新学生推入allStudents
并提到className
,它将被推入相应 className 的allStudents
子文档。
用点符号查询,比如
.find({"classes.students":"student8"})
将检查classes
数组中每个对象的students
字段,返回包含任何班级中特定学生的文档。
感谢您提供的答案。 只是使用 vanilla Javascript 共享另一个解决方案,可能对类似情况的人有用:
checkStudent = (batch, student) => {
let result = null
const inClass = (cls) => {
if (cls.students.includes(student)) {
result = cls
return true
}
return false
}
batch.classes.some(inClass)
return result
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.