我有一个嵌套数组。进行聚合操作,将子数组作为新根。
Category.aggregate([{$unwind: "$SubCats"}, { $replaceRoot: {newRoot: '$SubCats'}} ])
现在我需要按id查找。
使用以下代码将返回空结果:
Category.aggregate([{$unwind: "$SubCats"}, { $replaceRoot: {newRoot: '$SubCats'}}, {$match: {_id: `${req.params.id}`}} ])
使用$elemMatch
在我的Atlas层级中不被支持。并且使用findById()
会出现错误:“Category.aggregate(...)。findById不是一个函数”
数组:
[
{
_id: '61cae5daf5bfbebd7cf748ee'
title: 'category 1',
SubCats: [
{
_id: '61cae5daf5bfbebd7cf748ef'
name: 'subcat 1',
image: '/assets/images/vr-box-6203301_1920.jpg',
},
{
_id: '61cae5daf5bfbebd7cf748fb'
name: 'subcat 2',
image: '/assets/images/galaxy-s20_highlights_kv_00.jpg',
},
]
},
]
聚合后:
[
{
_id: '61cae5daf5bfbebd7cf748ef'
name: 'subcat 1',
image: '/assets/images/vr-box-6203301_1920.jpg',
},
{
_id: '61cae5daf5bfbebd7cf748fb'
name: 'subcat 2',
image: '/assets/images/galaxy-s20_highlights_kv_00.jpg',
},
]
_id
字段是一个字符串,例如'61cae5daf5bfbebd7cf748ef'
,还是一个ObjectId,即ObjectId("61cae5daf5bfbebd7cf748ef")
? - Wernfried Domscheit$unwind
和$match
。 - Wernfried Domscheit$filter
的。谢谢。 - abood alwa7sh