mongodb - 如何使用聚合填充数组内的字段
问题描述
这是我使用 _id 从元素数组返回对象的查询。看起来像这样,
db.users.aggregate([
{$match: { "business_idea._id": ObjectId('613ee10818bc570bceb1d060') }},
{$project: {
business_idea: {$filter: {
input: '$business_idea',
as: 'bi',
cond: { $eq: ["$$bi._id", ObjectId('613ee10818bc570bceb1d060') ] }
}}
}}
])
这个查询产生这样的输出,
{
"_id" : ObjectId("613e418f19968b0652bbbb24"),
"business_idea" : [
{
"business_tags" : [
ObjectId("613ee063b11cee0b7dde1086")
],
"_id" : ObjectId("613ee10818bc570bceb1d060"),
"business_id" : "613ee10818bc570bceb1d05f",
"business_name" : "Business_2",
"business_type" : "No type",
"business_desc" : "desc, desc-2",
"business_logo" : "https://neur-dev.s3.ap-south-1.amazonaws.com/logo/21091631510791555.jpeg",
"isDeleted" : false,
"business_name_to_lower" : "business_2"
}
]
}
现在我只想business_tags
使用businesstags
._id
任何人都可以帮我解决这个问题,谢谢。
解决方案
要查找相关标签,您必须通过$lookup
聚合获取它们,如下所示:
{
"$lookup":{
from: 'businesstags',
localField: 'business_tags',
foreignField: '_id',
as: 'new_tags'
}
}
推荐阅读
- sse - 是否所有支持 AVX2 的 CPU 也支持 SSE4.2 和 AVX?
- html - 从网页中检索所有 Excel 文件链接
- java - 尝试连接到谷歌云存储并出现错误
- ios - TrustKit 通过异常:尝试为不受支持的密钥算法生成 SPKI 哈希
- docker - Traefik docker - requestAcceptGraceTimeout
- r - 如何在 R ggplot 中改变 geom_text 中的文本长度?
- c# - 您将如何为数学创建 n 个嵌套循环?
- c# - 使用哪个,WebClient.OpenRead、OpenReadAsync 或 OpenReadTaskAsync
- ios - api 获取请求失败,但发布、放置、删除工作
- bash - 在不使用 seq 的情况下获取 bash 中的数字序列