Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用mongoose对集合进行分组并对某些字段进行计数_Node.js_Mongodb_Mongoose_Mongodb Query_Aggregation Framework - Fatal编程技术网

Node.js 使用mongoose对集合进行分组并对某些字段进行计数

Node.js 使用mongoose对集合进行分组并对某些字段进行计数,node.js,mongodb,mongoose,mongodb-query,aggregation-framework,Node.js,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我有这个模型: const mongoose = require('mongoose') const donationSchema = new mongoose.Schema({ user_id:{ type:mongoose.Schema.Types.ObjectId, required:true }, title:{ type:String, required:true }, description:{ type:String,

我有这个模型:

const mongoose = require('mongoose')

const donationSchema = new mongoose.Schema({
  user_id:{
    type:mongoose.Schema.Types.ObjectId,
    required:true
  },
  title:{
    type:String,
    required:true
  },
  description:{
    type:String,
    required:true
  },
  city:{
    type:String,
    required:true
  },
  photo:{
    type:String,
    required:true
  },
  quantity:{
    type:Number,
    required:true,
    default:1
  },
  status:{
    type:String,
    required:true,
    default:"En cours"
  },
  category:{
    type:String,
    required:true
  },
  subscribers:{
    type:[],
    required:false
  },
  value:{
    type:Number,
    required:false
  },
  attribution_date:{
    type:Date,
    required:false
  }
},
  {timestamps:true})

  donationSchema.pre('save', function(next) {
    next()
  })

  module.exports = mongoose.model('Donation', donationSchema)
在我的路由器中,我希望根据字段user\u id聚合集合,并获得集合中用户id的重复次数计数、每个用户id的字段和每个用户id的订阅者数组中的元素计数


这在SQL中是可能的,但这是我第一次使用mongoose,因此如果您能帮助我,我将不胜感激。

您可以使用下面的聚合

db.collection.aggregate([
  { "$group": {
    "_id": "$user_id",
    "countOfUsers": { "$sum": 1 },  //Count the number of user ids
    "subscribersCount": { "$sum": { "$size": "$subscribers" }}  // Get the size of the subscribers array and make summation
  }}
])

您可以使用下面的聚合

db.collection.aggregate([
  { "$group": {
    "_id": "$user_id",
    "countOfUsers": { "$sum": 1 },  //Count the number of user ids
    "subscribersCount": { "$sum": { "$size": "$subscribers" }}  // Get the size of the subscribers array and make summation
  }}
])