arrays - 具有嵌套 ID 数组的 Mongo 聚合
问题描述
我有一个Model
类似于这样的结构:
{
"_id": ObjectId("5c878c5c18a4ff001b981zh5"),
"books": [
ObjectId("5d963a7544ec1b122ab2ddc"),
ObjectId("5d963be01f663d168f8ea4dc"),
ObjectId("5d963bcb1f663d168f8ea2f4"),
ObjectId("5d963bdf1f663d16858ea7c9"),
}
现在我想使用聚合框架来获取仅包含已填充书籍的列表,例如:
{ _id: ObjectId("5d963a7544ec1b122ab2ddc"), title: ...., ... },
..
解决方案
.aggregate([
{
$lookup: {
from: 'books',
let: { books: '$books' },
pipeline: [{ $match: { $expr: { _id: { $in: ['_id', '$$books'] } } } }],
as: 'bookInfos'
}
},
{ $unwind: '$bookInfos' },
{ $replaceRoot: { newRoot: '$bookInfos' } }
])
我不太确定你的问题,但我认为这可能是你正在寻找的。
推荐阅读
- excel - 组合连续数字_Excel公式或VBA
- swift-mt - 如何获取快速消息的发件人?我正在使用 prowide-core 来解析 SWIFT MT (FIN) 消息
- css - 有没有办法实现将一个堆叠上下文的元素堆叠在另一个堆叠上下文的元素之间的视觉效果?
- wordpress - Wordpress 将父类别显示为标题,下方有子项
- javascript - 试图在一系列对象中找到最冷和最热的城市
- java - 注册多个 Jackson 转换器
- c# - 如何在 C# 中将一个表的新旧值保存到另一个表中?
- javascript - 根据参数生成多个文件不能以异步方式工作
- ios - 无法为模拟器构建应用程序
- amazon-s3 - 使用等待和通知处理器的 Apache NiFi s3 文件移动