Разница между схемами Mongoose - заселение - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь использовать дерево категорий следующим образом:

 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 }]
});

, который хранит все подкатегории в основной категории?

...