【问题标题】:get length of array field in mongoose _ Nodejs在猫鼬_Nodejs中获取数组字段的长度
【发布时间】:2019-04-09 15:42:59
【问题描述】:

假设我们有一个包含其他用户对象数组的用户模型。

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

我需要计算这个 objectIds。 第一个解决方案是获取关注者的长度。

req.user.followers.length

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

【问题讨论】:

    标签: node.js express mongoose mongoose-schema


    【解决方案1】:

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

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

    如果您想查找任何具有特定长度数(例如:0)的文档,您可以这样做:

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

    【讨论】:

    • 如果我过滤 {'followers' :0} 。我无法统计它?
    • @babakabadkheir 我更新了我的答案:)!使用聚合,您可以在那里过滤或对数据执行任何操作。
    • 老兄,我需要一个相关的解决方案。如果我在任何地方使用聚合来获取计数,当我需要填充关注者的信息时它不起作用。如果我有 100 个用户,我必须在聚合后使用填充这个 id。这意味着聚合 + 100 填充!!
    • 我猜唯一的方法是获取 req.user.followers.length,因为您的架构就是为此而设计的。
    猜你喜欢
    • 2022-11-13
    • 2019-09-25
    • 2018-12-23
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多