Для категорий в Монго вы можете использовать модель, подобную наследованию, в которой вы можете сохранить идентификатор родительского и родительского идентификатора для каждой модели и ее потомков, а затем добавить метод в модель Мангуста для добавления потомка при каждом вызове например, это будет выглядеть так:
const ProductCategory = new Schema({
name: String,
parent: { type: Schema.Types.ObjectId, ref: 'ProductCategory'},
ancestors: [{type: Schema.Types.ObjectId, ref: 'ProductCategory'}],
children: [{type: Schema.Types.ObjectId, ref: 'ProductCategory'}]
});
ProductCategory.methods = {
addChild: function(child){
let that = this;
child.parent = this._id;
child.ancestors = this.ancestors.concat([this._id]);
return this.model('ProductCategory').create(child).addCallback
(function(child){
that.children.push(child._id);
that.save();
});
}
};
затем, откуда вы хотите найти товары по их категориям, вы должны объединить найденный вами идентификатор категории с его дочерними идентификаторами и использовать этот массив в запросе поиска с оператором $ in, чтобы найти все товары в категории с ее дочерними элементами. .