node.js - 使用 mongodb 获取用户所有帖子的点赞数

标签 node.js mongodb mongoose social-media-like

您好,我想建立一个排行榜,根据用户在所有帖子中积累的喜欢程度对用户进行排名。

我的帖子数据库

  user: {
    type: Schema.Types.ObjectId,
  },
  text: {
    type: String,
    required: true,
  },
  imageURL: {
    type: [String],
  },
  name: {
    type: String,
    required: true,
  },
  category: {
    type: String,
  },
  likes: [
    {
      user: {
        type: Schema.Types.ObjectId,
      },
    },
  ],
  date: {
    type: Date,
    default: Date.now,
  }

我的用户数据库:


  name: {
    type: String,
    required: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  password: {
    type: String,
    required: true,
  },
  date: {
    type: Date,
    default: Date.now,
  },

我尝试了各种查询和聚合函数,但无法找到正确的解决方案。还有其他方法可以获取列表吗? 我想获得用户列表以及他们在所有帖子中获得的总喜欢数。我怎样才能做到这一点?

最佳答案

您可以尝试此查询

db.collection.aggregate([
  {
    $project: {
      user: 1,
      numberOfLikes: {
        $cond: {
          if: {
            $isArray: "$likes"
          },
          then: {
            $size: "$likes"
          },
          else: "NA"
        }
      }
    }
  }
])

您可以找到此查询的演示 here

关于node.js - 使用 mongodb 获取用户所有帖子的点赞数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62266396/

相关文章:

MongoDB 中的 JavaScript NoSQL 注入(inject)预防

javascript - mongoose - 对每个数组元素执行查询

node.js - [NODEJS][AZURE] 如何获取文件的 sastoken url 并能够访问它。 [签名不匹配。]

mysql - Node、Sequelize、Mysql - 如何为模型定义排序规则和字符集?

haskell 。 MongoDB 驱动程序或 Aeson 字符集问题

c# - DDD 层 - 与实体的通信

node.js - 近场必须是点

javascript - 按测试列表过滤

javascript - 为什么即使 webpack 没有抛出任何错误,React 组件也不会渲染?

javascript - 在投影字段中使用 $elemMatch - 未根据需要进行过滤