如何总结一场价值观在收藏猫鼬

0

的问题

const PostSchema = new mongoose.Schema({
  title: {
    type: String,
  },
  text: {
    type: String,
    required: true,
  }
  postedBy: {
    type: mongoose.Schema.ObjectId,
    ref: "User",
  }
  likes: [{
    type: mongoose.Schema.ObjectId,
    ref: "User",
  }, ],
  likeLength: {
    type: Number,
    default: 0
  }
});


let totalLikes = Post.aggregate([{
    $match: {
      postedBy: req.profile._id,
    },
  },
  {
    $group: {
      _id: "$postedBy",
      total_count: {
        $sum: "$likeLength"
      }
    }
  },
])

我想总结一likeLength值在所有集过滤postedBy场和获得总结的结果,这种类型的整数。 我试图totalLikes功能上而无法做到这一点。

javascript mongodb mongoose node.js
2021-11-23 17:31:51
2
0

也许这可以帮助

  • 使串 req.profile._id 到ObjectId
  • 小组通过 null 所有的都是从同一个 postedBy 因此,所有文件,通过正在组。 (组通过空装置的所有集1小组)(你组还确定但这是更简单)
  • unset的 _id 获得作为结果 [{"total_count" : 20}] 例如

*在测试的基如果测试 $match 工作和文件被发现。

let totalLikes = Post.aggregate([{
    $match: {
      postedBy: mongoose.Types.ObjectId(req.profile._id),
    }
  },
  {
    $group: {
      _id: null,
      total_count: {
        $sum: "$likeLength"
      }
    }
  },
  {"$unset": ["_id"]}
])
2021-11-23 18:51:11

谢谢你这么多。 我还做了这个功能$组:{_id:"$postedBy",sumLikes:{$总:{$size:"$喜欢"}}}但是如何获得这些数据,我的意思是整数,并且发送这些来的客户?
jdee

查询总是返回阵列的文件(或空阵列,如果没有被发现)。 接近你可以得到的是这个 [{total_count : 20 }] 如果你想要这个,你可以除去 _idprojectunset
Takis _

谢谢你这么多,我真的很抱歉浪费你的时间,但我认为这不是我的问题。 我的使用作出反应于客户和当我得到这个数据服务器我遇到这个{_pipeline:Array(3),options:{...}}所以我怎么可以到达我的号码:). 但是我可能要问,一个新的问题,因为网站的格式。
jdee

聚合返回游标,并且他们有很多方法中的一个简单的是 toArray() 从那你让他们与js之后。 看看猫鼬文件
Takis _

实际上我使用这些butget没有结果1)控制台。日志(统计数据?._pipeline?.地图((项目)=>(p{item[1]}</p>)和2)的统计数据。_pipeline[1]
jdee

如果你有问题js,也许提出新的问题,我使用java/和一般,但是很多人可以帮助
Takis _

谢谢你,我将看看,并将提出新的问题,如果不能做到这一点。 再次谢谢你
jdee
0

该解决方案,是以下。 结果[0]的结果将是一个对象有sumLikes财产。

aggregate([
      {
        $match: {postedBy: req.profile._id}
      },
      {
        $group: {
          _id: null,
          sumLikes: {
            $sum: "$likeLength",
          },
        },
      },
      { $unset: ["_id"] },
    ], function(err, result) {
      if(err){
        console.log(err)
      }else{
        res.json(result[0])
      }})

2021-11-23 18:35:38

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................