我想得到它所属的所有产品和类别。我有这个全文搜索查询
db.products.find(
{ $text: { $search: 'IPhone 6' } },
{ score: { $meta: "textScore" } })
.sort({ score:{$meta: "textScore" } })
.limit(100)
结果是下一个x1c 0d1x
它给我所有的产品和它的主要和子类别,但由于我们有一个限制前端是无法显示所有的主要和子类别
不知何故,我需要添加不同的主类别和子类别
看起来聚合是一条路要走,但我不知道如何做到这一点。
会很感激任何帮助!
我希望输出如下所示
{
"main_category_name": "Lights & Lighting",
"main_category_id": 39,
"sub_categories": [
{
"sub_сategory_name_1": "Portable Lighting",
"sub_сategory_id_1": 390503,
"sub_сategory_name_2": [
{
"sub_сategory_name_2": "Flashlights & Torches",
"sub_сategory_id_2": 150410,
"sub_сategory_name_3": []
}
]
}
]
}
1条答案
按热度按时间ffx8fchx1#
你可以这样做,但是在3层之后它会变得非常粗糙-我可能会建议更改模式,或者可能只是获取不同的值并在应用层重新构造它们,也就是说-这是可能的:
几件小事:
1.不清楚您想要什么命名约定(
sub_categories
与sub_category_name_n
)-所以我将其保持为sub_categories
1.每个聚合管道都需要一个
_id
-因此您的main_category_name
和main_category_id
被推了进来。结果是:
请注意,最后一层中的
{}
是因为我的虚拟数据没有sub_category_*_3
字段-如果您需要过滤这些字段,可以在应用层轻松完成(聚合阶段也可以)