Как получить только одно поле в mongodb на динамических внутренних уровнях? - PullRequest
0 голосов
/ 03 октября 2018

Я работаю над веб-приложением и не могу решить свою проблему.На сайте есть категории.Основные категории и каждая категория имеет свои подкатегории, и подкатегории могут также иметь подкатегории.Все они создаются пользователями.Я могу собрать коллекцию без проблем, но не могу выполнить мой запрос.

Допустим, это моя коллекция:

[
   {
      categoryName: 'category1',
      otherValue: 'value1',
      subCategories: [
          {
             categoryName: 'category2',
             otherValue: 'value2',
             subCategories: [
                 {
                     categoryName: 'category3',
                     otherValue: 'value3',
                     subCategories: [],
                 }
             ]
          },
          {
             categoryName: 'category4',
             otherValue: 'value4',
             subCategories' : []
          },
          {
             categoryName: 'category5',
             otherValue: 'value5',
             subCategories: [
                 {
                      categoryName: 'category6',
                      otherValue: 'value6',
                      subCategories: []
                 },
                 {
                      categoryName: 'category7',
                      otherValue: 'value7',
                      subCategories: []
                 }
             ]
          }
      ]
   },
   {
      categoryName: 'category8',
      otherValue: 'value8',
      subCategories: [
          {
             categoryName: 'category9',
             otherValue: 'value9',
             subCategories: [
                {
                    categoryName: 'category10',
                    otherValue: 'value10',
                    subCategories: [],
                }
             ]
          },
          {
             categoryName: 'category11',
             otherValue: 'value11',
             subCategories' : []
          },
          {
             categoryName: 'category12',
             otherValue: 'value12',
             subCategories: [
                 {
                      categoryName: 'category13',
                      otherValue: 'value13',
                      subCategories: []
                 }
             ]
          }
      ]
   },
]

Я не хочу использовать .eval () и не смог найти ни одногодругое решение, чтобы получить результат, который я хочу.Я потратил на это уже 3 дня безуспешно.Я надеюсь, что кто-нибудь сможет мне помочь.

Результат, который я хотел бы получить, - только категория Имена:

[
   {
      categoryName: 'category1',
      subCategories: [
          {
             categoryName: 'category2',
             subCategories: [
                 {
                     categoryName: 'category3'
                 }
             ]
          },
          {
             categoryName: 'category4'
          },
          {
             categoryName: 'category5',
             subCategories: [
                 {
                      categoryName: 'category6'
                 },
                 {
                      categoryName: 'category7'
                 }
             ]
          }
      ]
   },
   {
      categoryName: 'category8',
      subCategories: [
          {
             categoryName: 'category9',
             subCategories: [
                {
                    categoryName: 'category10'
                }
             ]
          },
          {
             categoryName: 'category11'
          },
          {
             categoryName: 'category12',
             subCategories: [
                 {
                      categoryName: 'category13'
                 }
             ]
          }
      ]
   },
]

Любая идея приветствуется :) Заранее спасибо

ОБНОВЛЕНИЕ

То, что я пытался сделать так:

db.categories.find({ 'subCategories' : {$exists: true, $ne: []}}, { 'categoryName' : 1, '_id' : 0, 'subCategories.categoryName' : 1, 'subCategories.subCategories.categoryName' : 1 });

Но на этом пути я могу видеть только на 2 уровня глубиной, и это статический способ,Мне бы хотелось, чтобы у меня был динамический способ сопоставления каждого имени категории внутри подкатегорий и подкатегорий подкатегорий.

Надеюсь, это будет понятнее.

...