猫鼬模式之间的差异-填充

时间:2019-02-23 12:09:27

标签: mongodb mongoose-schema mongoose-populate

我正在尝试像这样的类别树:

 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

我的查询(使用猫鼬):

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

可将所有子类别存储在主要类别中?

0 个答案:

没有答案