получить длину поля массива в mongoose _ Nodejs - PullRequest
0 голосов
/ 06 ноября 2018

предположим, что у нас есть модель User, которая содержит массив других объектов User.

let UserSchema = mongoose.Schema({
   followers: [{
        type: mongoose.Schema.ObjectId,
        ref: 'User',
    }]
})

Мне нужно количество идентификаторов этого объекта. Первое решение состоит в том, чтобы получить длину последователей.

req.user.followers.length

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

1 Ответ

0 голосов
/ 06 ноября 2018

из-за неправильного понимания вашего вопроса, поэтому я обновляю свой ответ: вы можете использовать $size агрегата Монго.

db.users.aggregate(
   [
      {
         $project: {
            id: 1,
            total_followers: { $size: "$followers" }
         }
      }
   ]
)

Если вы хотите найти какой-либо документ с определенным номером (например, 0), вы можете сделать это:

db.users.find({ followers: { $size: 0 } } )
...