Estoy usando STudio 3T y tengo una consulta como esta:
select [Dashbo],lead([Dashbo]) over(order by [Entered Date]) from ATest_prevback;Esto me está dando un error. ¿Cómo realizar esto en MongoDB? ¿Puede alguien darme un ejemplo?
Gracias, adi
Desafortunadamente, no es posible.
Solución alternativa: cree una vista materializada con datos calculados.
Ejecutar en MongoDB Shell:
var prev = null; db.ATest_prevback.find({}).sort({field:1}).forEach(function(curr){ db.materialized_view.insert({curr:curr.field, prev:(prev ? prev.field : 0)}) prev = curr; }) Ejecute consultas de lead y lag "falsas":
db.materialized_view.aggregate([ {$match:{$expr:{$eq:["$curr", "$prev"]}}} ])A partir de MongoDB v5.0+, se puede hacer usando $shift en $setWindowFields .
db.collection.aggregate([ { "$setWindowFields": { "partitionBy": null, "sortBy": { "entered_date": 1 }, "output": { lag: { $shift: { output: "$Dashbo", by: -1, default: "Not available" } }, lead: { $shift: { output: "$Dashbo", by: 1, default: "Not available" } } } } } ])Aquí está el parque infantil de Mongo para su referencia.