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
}}
])