mongodb - Mongoose - 选择具有对象数组作为搜索参数的文档
问题描述
我无法找到有关我的问题的信息 - 不过我可能一直在寻找错误的东西。
我在 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
}
}
]);
}
});
有没有办法在简单的查询/数据库操作/聚合管道中做到这一点?我想避免一个又一个地执行一堆查询。非常感谢帮助,谢谢!
解决方案
根据您所需的查询输出,我会将数据结构重新组织为如下所示(NB,伪代码):
CourseSchema({
"year": Number,
"group": String,
"title": String
});
然后,您可以执行操作并使用例如aggregate
格式化输出。project
推荐阅读
- java - GSON JSON 解析字符串与 POJO
- hadoop - 错误 hive.HiveConfig:无法加载 org.apache.hadoop.hive.conf.HiveConf。确保 HIVE_CONF _DIR 设置正确
- javascript - ReferenceError:答案未在 HTMLButtonElement.button.onclick 中定义
- swift - 无法在 Swift 中进行领域迁移
- python - 如何使用 SQLalchemy 将时间序列数据插入 SQLite?
- node.js - MongoDB 注入:转义用户输入以与 $where 运算符一起使用
- reactjs - 意外的令牌,在我的 countText 案例中应为“}”
- git - GitLab CI/CD:仅在特定目录中的文件发生更改时运行作业
- c - 如何可靠地创建标记对象结束的符号?
- python-3.x - 在 pyspark shell 中工作的过滤器不是 spark-submit