MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

групи по месец и година с помощта на mongoose.js

Mongoose предоставя лека обвивка около рамката за агрегиране на MongoDB. Ако не сте запознати с агрегирането, можете да научите повече за in от документите на MongoDB:http:/ /docs.mongodb.org/manual/aggregation/

За да масирате вашите данни във формата, която сте описали по-горе, можете да използвате тръбопровод за агрегиране с поредица от $group операции. Тук се използва рамката mongoose:

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

Първата $група ще доведе до документи от тази форма, по един за всеки ден:

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

Втората група $ ще доведе до документи, групирани по месеци:

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

А третата $група ще доведе до още по-големи документи, по един за всяка година.

Тази заявка ще обедини вашите данни в големи, йерархични документи. Ако обаче планирате да изпълнявате заявки за тези данни след агрегирането, това може да не е най-полезната форма за вашите данни. Помислете как ще използвате обобщените данни. Схема, включваща повече по-малки документи, може би един на месец или дори един на ден, може да бъде по-удобна.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Експортиране на данни от Mongo/Cassandra към HDFS с помощта на Apache Sqoop

  2. Запитване до MongoDB въз основа на Mongo ID в приложение node.js

  3. OAuth 2.0 – Кога токенът за достъп трябва да бъде подновен с токен за опресняване?

  4. Инсталиране на PHP 7 MongoDB клиент/драйвер?

  5. MongoDB oplog има записи с точки в имената на ключовете, които не могат да бъдат търсени, afaict