Archivo de la categoría: Uncategorized

MongoAL: MongoDB Aggregation Language

Hace unas semanas comentaba cómo agregar datos para una serie temporal con MongoDB.

Hoy veremos cómo sería el léxico de dicha agregación mediante MongoAL, un lenguaje de agregación para MongoDB que un servidor acaba de publicar en su versión previa y, si bien de momento no aporta ninguna funcionalidad nueva sobre lo existente,  provee un léxico más amigable para un ser humano. El objetivo de dicho lenguaje es exponer el framework de agregación a clientes y usuarios genéricos que no tienen por qué conocer la estructura JSON del pipeline de agregación de MongoDB.

Recordemos el léxico de una consulta para crear una serie temporal:

[{ "$match":{ "proceso": "1234" }},
{"$group" : {
    "_id" : {
       "$subtract" : ["$timestamp" ,
                    {"$mod" : [ "$timestamp",
                                300000 ] }]},
    "cpu" : {"$avg": "$cpu" }
 }},
{"$sort":{"_id":1}}]

El equivalente en MongoAL sería (suponiendo que, por ejemplo, los elementos están en una colección llamada monitor):

FROM monitor MATCH proceso = 1234
GROUP BY timestamp - timestamp % 3000
      avg(cpu) as cpu
SORT BY _id ASCENDING