【发布时间】:2017-11-16 14:39:49
【问题描述】:
我有以下带有出勤字段的课程架构,它存储具有以下键值结构(字符串:列表)的字典。特别是,出勤对象的键存储上课日期,而值存储出席的学生列表(学生 ID)。
var CourseSchema = new Schema({
attendance: {},
});
例如,单个课程项目可能如下:
{"_id":"559a7353186a384b54f9aea9","attendance":{"2015-12-17":["558febdb949eff4711e621e9","559020fe79f141941ddd3246"],"2015-11-14":["558febdb949eff4711e621e9","559020fe79f141941ddd3246"]}
我正在尝试返回有学生参加过的课程(因此基本上返回其出勤字段中包含特定学生 ID 的任何课程。我正在尝试按以下方式进行操作,但它返回的是空结果。是我的查询有问题吗?
我尝试检查此链接,但它对我也不起作用。 MongoDB query inside a nested array
Course.find({"attendance.$": {$in: ["558febdb949eff4711e621e9"]}}...)
【问题讨论】:
-
这里的问题是你有像
"2015-12-17"这样的“命名键”,这会妨碍引用的解决方案有用。因此,您的模式设计选择是错误的。如果您更改架构,那么您可以以有效的方式完全按照您的意愿行事。目前,唯一的方法根本不是很有效。
标签: javascript mongodb mongoose