node.js - 加入 mongo 中的查询以包括主要集合的所有字段和其他集合的选定字段
问题描述
我想包括我在聚合函数中加入的主要集合的所有字段和其他集合的 2-3 个字段。我可以使用 $project 作为
> $project:
> {
> "_id":1,
> "currency":1,
> "studentId":1,
> ............
> ............
> "partners.address.country": 1,
> "course.courserName": 1
> }
我在主要收藏中有超过 25 条记录,也希望它更有活力。有没有其他方法可以让我不必编写主要集合的每个字段。
解决方案
从技术上讲,您可以使用 $project 和 $addFields 的组合,但从性能角度计算应用程序级别的字段列表会更好。
我能想到的唯一有效用例是当您事先不知道主集合的所有字段时。
所以假设“合作伙伴”和“课程”来自 $lookup 管道可以是这样的:
db.collection.aggregate([
{
$addFields: {
"tmp": {
"partners": "$partners",
"course": "$course"
}
}
},
{
$project: {
"partners": false,
"course": false
}
},
{
$addFields: {
"partners.address.country": "$tmp.partners.address.country",
"course.courserName": "$tmp.course.courserName"
}
},
{
$project: {
"tmp": false
}
}
])
推荐阅读
- android - 拒绝对 OkHttp 中先前失败的类重新初始化
- mongodb - 尝试使用 $cond 到 $sum 和 $subtract
- swift - 嵌套枚举的可编码一致性?
- android-studio - 如何创建检测 lambda 函数中“it”使用情况的 Lint 规则。在 Intellij/Android Studio 中
- z3 - 在 z3 中迭代添加
- java - 子实体具有复合键时如何级联插入子实体
- python - 如何取消注释 spyder python
- python - 无法在 Ubuntu 上安装 scipy
- python - tempfile.TemporaryFile() 在分配给变量后不适用于 sqlite3
- javascript - 尽管有参考,V-model 数组项无法更新