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

kelompok berdasarkan bulan dan tahun menggunakan luwak.js

Mongoose menyediakan pembungkus ringan di sekitar kerangka agregasi MongoDB. Jika Anda baru mengenal agregasi, Anda dapat mempelajari lebih lanjut tentang di dari dokumen MongoDB:http:/ /docs.mongodb.org/manual/aggregation/

Untuk menggabungkan data Anda ke dalam formulir yang telah Anda jelaskan di atas, Anda dapat menggunakan saluran agregasi dengan serangkaian operasi $group. Ini dia menggunakan kerangka luwak:

var dateSchema = mongoose.Schema({…});
var DateItem = mongoose.model('DateItem', dateSchema);

DateItem.aggregate(
      { $group : { 
           _id : { year: { $year : "$accessDate" }, month: { $month : "$accessDate" },day: { $dayOfMonth : "$accessDate" }}, 
           count : { $sum : 1 }}
           }, 
      { $group : { 
           _id : { year: "$_id.year", month: "$_id.month" }, 
           dailyusage: { $push: { day: "$_id.day", count: "$count" }}}
           }, 
      { $group : { 
           _id : { year: "$_id.year" }, 
           monthlyusage: { $push: { month: "$_id.month", dailyusage: "$dailyusage" }}}
           }, 
      function (err, res)
           { if (err) ; // TODO handle error 
             console.log(res); 
           });
});

$group pertama akan menghasilkan dokumen formulir ini, satu untuk setiap hari:

{ 
  "_id" : { "year" : 2013, "month" : 8, "day" : 15 },
  "count" : 1
}

$group kedua akan menghasilkan dokumen yang dikelompokkan berdasarkan bulan:

{
  "_id" : { "year" : 2012, "month" : 11 },
 "dailyusage" : [
          { "day" : 6, "count" : 1 },
          { "day" : 9, "count" : 1 },
          ... ]
},

Dan $group ketiga akan menghasilkan dokumen yang lebih besar, satu untuk setiap tahun.

Kueri ini akan menggabungkan data Anda ke dalam dokumen hierarkis yang besar. Namun, jika Anda berencana untuk menjalankan kueri pada data ini setelah agregasi, ini mungkin bukan formulir yang paling berguna untuk data Anda. Pertimbangkan bagaimana Anda akan menggunakan data teragregasi. Skema yang melibatkan lebih banyak dokumen yang lebih kecil, mungkin satu per bulan atau bahkan satu per hari, mungkin lebih nyaman.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menyimpan dan memperbarui data biner secara efisien di Mongodb?

  2. Bagaimana mengambil catatan terbaru menggunakan find_one di pymongo

  3. Pengambil / penyetel luwak untuk menormalkan data

  4. mongodb ditemukan oleh beberapa item array

  5. Kebocoran koneksi mongo dengan morphia