Я разрабатываю приложение для онлайн-покупок, которое имеет двухуровневый тип продукта Сейчас я использую MongoDB для его хранения. Мой язык программирования - TypeScript.
Моя модель, как показано ниже:
class ProductTypeModel {
_id: ObjectID;
name: string;
sort: number; // sort
status: number; // enable | disable
children: Object[]; // sub types, like [{ _id: ObjectID('xx', name: 'xx', sort: xx, status: xx) }]
create_time: Date;
update_time: Date;
}
Если у нас есть данные, как показано ниже:
{
"_id" : ObjectId("5b8fe56218de48345a6b7079"),
"create_time" : ISODate("2018-09-05T14:17:06.912Z"),
"update_time" : ISODate("2018-09-05T14:17:06.912Z"),
"name" : "Books",
"sort" : 0,
"status" : 1,
"children" : [
{
"_id" : ObjectId("5b8fe56218de48345a6b7075"),
"name" : "Computer",
"sort" : 1,
"status" : 1
},
{
"_id" : ObjectId("5b8fe56218de48345a6b7076"),
"name" : "Math",
"sort" : 2,
"status" : 0
},
{
"_id" : ObjectId("5b8fe56218de48345a6b7077"),
"name" : "Novel",
"sort" : 3,
"status" : 1
}
]
}
Как выбрать типы и дочерние типы с помощью status=1
?
Мое текущее решение состоит в том, чтобы сначала выбрать базовые типы и пройти, чтобы исключить потомков, у которых status
равно 0
. Есть ли лучший способ сделать это?