MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zagregowane szeregi czasowe MongoDB

Możesz zagregować jako:

  • $match dokumenty na konkretną datę.
  • Zbuduj $group i $project obiekty przed zapytaniem.
  • $group o $hour , gromadź wszystkie dokumenty na godzinę na minutę w tablicy. Zachowaj minutę gdzieś w dokumencie.
  • $project zmienna docs jako $setUnion wszystkich dokumentów na godzinę.
  • $unwind dokumenty.
  • $sort według orders
  • $limit najlepsze 10 dokumenty, których potrzebujemy.

Kod:

var inputDate = new ISODate("2015-01-09T13:00:00Z");
var group = {};
var set = [];
for(var i=0;i<=60;i++){
    group[i] = {$push:{"doc":"$vals."+i,
                       "hour":"$_id.hour",
                       "min":{$literal:i}}};
    set.push("$"+i);
}
group["_id"] = {$hour:"$hour"};
var project = {"docs":{$setUnion:set}}

db.t.aggregate([
{$match:{"hour":{$lte:inputDate,$gte:inputDate}}},
{$group:group},
{$project:project},
{$unwind:"$docs"},
{$sort:{"docs.doc.orders":-1}},
{$limit:2},
{$project:{"_id":0,
           "hour":"$_id",
           "doc":"$docs.doc",
           "min":"$docs.min"}}
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. i18Next - NodeJS - Jak zmienić tłumaczenia bez przeładowywania serwera

  2. $push w MongoDb nie działa?

  3. MongoCollection::aggregate() jest niezdefiniowane w Heroku PHP przy użyciu MongoHQ

  4. Pętla nie wyświetla prawdy lub fałszu na podstawie zapytania

  5. Jak uzyskać listę baz danych mongodb i listę kolekcji z aplikacji ruby ​​on rails?