Mongodb:对同一集合应用查找,并使用单个查询在父类别数组中获取子类别
这是类别集合的模式,我在其中存储类别、子类别和子类别的进一步子类别Mongodb:对同一集合应用查找,并使用单个查询在父类别数组中获取子类别,mongodb,aggregation-framework,Mongodb,Aggregation Framework,这是类别集合的模式,我在其中存储类别、子类别和子类别的进一步子类别 mongoose.Schema({ name:{ type: Array, required: true}, //It is an array because name can be in multiple languages path:{ type: String, required: true}, // All parent categories in an order to have immediate p
mongoose.Schema({
name:{ type: Array, required: true}, //It is an array because name can be in multiple languages
path:{ type: String, required: true}, // All parent categories in an order to have immediate parent at the end
parent: { type: String, required: true}
});
我在所有三个字段上都添加了索引。现在,需求是什么-需要获取嵌套在父类别数组中的所有子类别,这些子类别作为单个查询的结果返回
对于根目录的类别,parent
具有'/'
,path
是由“/”分隔的ID,直到直接的父目录
我尝试的是,通过传递\u id
来获取父类别的所有子类别,如-
categoryModel.find({parent: /^\/documentId/})
但是,我希望结果中包含嵌套子类别的所有父类别。怎么做
预期产量-
[
{
_id: '1',
name: 'MainCategory1',
path: '/'
parent: '/',
children: [
{
_id: '3',
name: 'SubCategory3',
parent: '1',
path: '/1'
},
]
},
{
_id: '2',
name: 'MainCategory2',
path: '/'
parent: '/',
children: [
{
_id: '5',
name: 'SubCategory5',
parent: '2',
path: '/2',
children: [
{
_id: '7',
name: 'SubCategory7',
parent: '5',
path: '/2/5',
children: [
{
_id: '9',
name: 'SubCategory7',
parent: '7',
path: '/2/5/7',
}]
},
]
},
]
},
]
我通过使用聚合和聚合得到了结果,尽管它的格式不完全符合要求。我需要的格式是在得到查询响应后生成的。这是我的问题
{ $match: {parent : '/'}},
{
$graphLookup: {
from: "category",
startWith: "$_id",
connectFromField: "_id",
connectToField: "parent",
depthField: "depth",
as: "children"
},
},
这是我从上面的查询中得到的回答
[{
"_id":"1",
"name":"category1",
"parent":'/',
"children":[
{
"_id":"3",
"name":"Sub-Category1",
"parent":"1",
"depth":0
}
]
},
{
"_id":"2",
"name":"Category2",
"parent":'/',
"children":[
{
"_id":"4",
"name":"Sub-Category2",
"parent":"2",
"depth":0
},
{
"_id":"5",
"name":"Sub-Category3",
"parent":"4",
"depth":1
}
]
}]
子类别相对于父类别的级别在哪里。您是否可以放置一些示例数据,您已经发布了预期结果。一个样本数据会有所帮助。