Пн goose для подсчета массива строк внутри одного документа - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь найти более эффективное решение, возможно, когда вы не берете весь массив строк из коллекции, а просто возвращаете счет. По сути, countDocuments эквивалент для строкового массива в одной пользовательской коллекции.

У меня есть решение, которое работает, но если этот список будет очень длинным, он не будет столь же хорошим с точки зрения производительности.

                  User.findById(
                  { _id: req.params.id }, { _id: 0 })
                  .select("blacklistGroup").then((result) => {
                    let output = JSON.parse(JSON.stringify(result.blacklistGroup));
                    console.log(output.length + " + people");
                  });

Я надеялся получить пример более эффективного решения, более согласованного с countDocuments, но для строкового массива. Я ценю помощь!

Вот определение модели blacklistGroup

  blacklistGroup: [String]

пример коллекции

  "blacklistGroup": [
    "5e98e8e785e69146f841d239",
    "5e9867ff5e72550988820dd3",
    "5e98e90d85e69146f841d23a",
    "5e98c950f4fb3f63b4634e30",
    "5e99fcf3a506cf570056898b",
    "5e99fd15a506cf570056898c",
    "5e99fd3aa506cf570056898d",
    "5e99fd64a506cf570056898e",
    "5e99fda5a506cf570056898f"
  ]

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Попробуйте это: User.aggregate ([{$ match: {_id: req.params.id}}, {$ project: {blacklistGroupLength: {$ size: '$ blacklistGroup'}}}])

0 голосов
/ 17 апреля 2020

Я нашел кое-что из документации MongoDB, которая может вам помочь. Вот ссылка

0 голосов
/ 17 апреля 2020

Есть ли у вашего черного списка группа, например, черный список ["name1", "name2"]? Был бы признателен за детали вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...