Я пытаюсь использовать дерево категорий следующим образом:
1. Category 1,
2. - Category 1.1
3. - Category 1.2
4. - - Category 1.2.1
5. Category 2
Моя схема:
var Category = new Schema({
name: {type:String, unique: true },
description: String,
sub: { type: Schema.Types.ObjectId, ref:'Category', required: false, default: null },
});
Вот данные в базе данных: https://pastebin.com/9RhQEymg
Мой запрос (используяmongoose):
Category.find({ sub: null }).lean().populate({ path: 'sub', model: Category }).exec()
Я хочу получить все категории без подкатегорий (основные категории), а затем получить список подкатегорий внутри всех этих категорий.результат выглядит так:
{
"pageCount": 1,
"object": "list",
"has_more": false,
"data": [
{
"_id": "5c71291ec5c336212c7033b3",
"sub": null,
"slug": "cat-1",
"name": "cat 1",
"__v": 0
},
{
"_id": "5c71299eef95fa085c45f268",
"sub": null,
"slug": "cat-2",
"name": "cat 2",
"__v": 0
}
]
}
Мое мышление плохо?Могу ли я заполнить это без использования подмассива следующим образом:
var Category = new Schema({
name: {type:String, unique: true },
description: String,
sub: [{ type: Schema.Types.ObjectId, ref:'Category', required: false, default: null }]
});
, который хранит все подкатегории в основной категории?