mongodb - 根据第一个的 id 过滤第二个集合后组合 2 个集合
问题描述
我有 2 个这样的集合:
批次:
{
"userId": "",
"productId: "",
}
产品:
{
"_id": "",
"name": "",
}
我想要做的是userId
首先过滤批次。然后获取我在批次的过滤元素中获得 id 的所有产品。我见过很多例子,但大多是相反的。
我的最终结果是这样的:
[{
name: "product 1",
batches: [...]
}]
解决方案
您可以尝试使用聚合管道查找,
$lookup
在分支集合中,传入productId
,let
并匹配 forproductId
和 filter的表达式条件userId
db.products.aggregate([
{
$lookup: {
from: "branches",
let: { productId: "$_id" },
pipeline: [
{
$match: {
userId: "1", // filter user id here
$expr: { $eq: ["$$productId", "$productId"] }
}
}
],
as: "brnaches"
}
}
])
推荐阅读
- c# - Azure 函数 SDK 导致 Newtonsoft 问题
- javascript - 如何用jQuery替换innerHTML?
- kotlin - 如何在 Koin 中提供基类?
- postgresql - 当我不知道其名称时更改默认顺序
- git - 在子模块中使用 .gitattributes 作为合并策略
- sql-server - 循环/更新结果,直到列的总和(bigint)小于指定的数字
- javascript - 如果我在 jquery 绑定中更改,为什么 html 表的顺序不会改变?
- ios - 播放视频时如何自动跳过 youtube iOS 应用中的广告?
- if-statement - 检测到 ArrayFormula 循环依赖
- java - 如何在垂直滚动视图上使用浮动按钮?