MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Agregat Mongoose/Mongodb - grup dan rata-rata beberapa bidang

Ini berhasil untuk saya:

  Post.aggregate([
    { $group: { _id: "$date", avgRating: { $avg: '$rating' }}}
  ]).
  then(function (res) {
    console.log(res); 
  })

Keluaran:

[
  { _id: 'Aug 18, 2021', avgRating: 3.0212234706616727 },
  { _id: 'Aug 19, 2021', avgRating: 2.9680319680319682 },
  { _id: 'Aug 20, 2021', avgRating: 3.023976023976024 },
  { _id: 'Aug 17, 2021', avgRating: 2.9600665557404326 },
  { _id: 'Aug 21, 2021', avgRating: 3.072661217075386 }
]

TAPI alangkah baiknya jika saya bisa memfilter ini berdasarkan faktor lain. Misalnya, setiap posting memiliki penulis (referensi ke model Pengguna). Bagaimana cara saya memfilter berdasarkan negara.nama atau jenis kelamin penulis?

Model pengguna:

const userSchema = new Schema({
email: {
    type: String,
    required: true,
    unique: true
},
birthday: {
    type: Date,
    required: true,
},
gender:{
    type: String,
    required: true
},
country:{
    name: {
        type: String,
        required: true
    },
    flag: {
        type: String,
        // default: "/images/flags/US.png"
    }
},
avatar: AvatarSchema,
displayName: String,
bio: String,
coverColor: {
    type: String,
    default: "#343a40"
},
posts: [ 
    {
    type: Schema.Types.ObjectId,
    ref: "Post" 
    }
],
comments: [
    {
        type: Schema.Types.ObjectId,
        ref: "Comment"
    }
],
postedToday: {
    type: Boolean,
    default: false
},
todaysPost: {
    type: String
}
}) 

Sesuatu seperti ini

    Post.aggregate([
    {$match: {"date": today}},
    {$group: {_id: {"country": "$author.country.name"}, avgRating: {$avg: "$rating"}}}
]).then(function(res) {
    console.log(res)
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan kombinasi $unset dan $set di mongoDB

  2. Pengikut - desain basis data mongodb

  3. Manajemen pengguna di node js dengan express, mongodb sebagai database server

  4. Apakah mongodump mengunci database?

  5. Buat kombinasi dua bidang unik dalam koleksi saya