我无法找到有关我的问题的信息-虽然我可能一直在寻找错误的信息。
我在MongoDB中的文档结构非常简单:
const Entry = new mongoose.Schema({
course: {
type: String,
trim: true,
required: true
},
year: {
type: Number,
required: true
},
group: {
type: String,
trim: true
},
title: {
type: String,
trim: true,
required: true
}
});
(为了更好的可读性而对其进行了缩短。)
我需要找到与Entries
之一(下面的模式)匹配的所有Courses
:
const Course = new mongoose.Schema({
course: String,
year: Number,
group: String,
title: String
});
我可以使用for循环对Courses
-Array中的每个元素执行查找,然后执行类似的操作:
Course.find({some condition}).then(courseschema => {
for (let i = 0; i < courseschema.length; i++) {
TimetableEntry.aggregate([
{
$match: {
year: courseschema[i].year,
course: courseschema[i].course,
title: courseschema[i].title,
group: courseschema[i].group
}
}
]);
}
});
有没有办法在简单的查询/数据库操作/聚合管道中执行此操作?我想避免一堆又一堆的查询。 非常感谢您的帮助,谢谢!
答案 0 :(得分:0)
根据您所需的查询输出,我将数据结构重新组织为如下所示(NB,伪代码形式):
CourseSchema({
"year": Number,
"group": String,
"title": String
});
然后,您可以执行aggregate
操作并使用project
格式化输出。