获取猫鼬_ Node.js中数组字段的长度

时间:2018-11-06 09:01:56

标签: node.js express mongoose mongoose-schema

假设我们有一个User模型,其中包含其他User对象的数组。

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

我需要计数此objectIds。 第一个解决方案是增加关注者的人数。

req.user.followers.length

但我认为获取包含许多objectIds的所有关注者并不重要。在我的查询中,我不需要所有这些objectIds。 我尝试使用虚拟机,但在虚拟机中有很多不必要的东西,我正在寻找这种情况的最佳且无成本的方式。

1 个答案:

答案 0 :(得分:2)

由于误解了您的问题,所以我更新了我的答案:您可以使用$size的mongo聚合。

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

如果要查找具有特定长度(例如0)的文档,可以执行以下操作:

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