const mongoose = require('mongoose'); const { Schema } = mongoose; mongoose.Promise = global.Promise; mongoose.level = "F"; /** * @typedef {Object} StatoProdotto * @property {bigint} Id * @property {number} IdStatoProdotto * @property {string} Descrizione * @property {Date} DataOra * @property {boolean} Enabled * @property {boolean} EnabledAlFresco */ const StatoProdottoSchema = new Schema({ IdStatoProdotto: Number, Descrizione: { type: String, maxlength: 100 }, DataOra: Date, Enabled: Boolean, EnabledAlFresco: Boolean }, { collection: 't_web_statiprodottos' }); const T_WEB_StatiProdotto = module.exports = mongoose.model('T_WEB_StatiProdotto', StatoProdottoSchema); module.exports.findAllIdApp = async function () { const myfind = {}; const myquery = [ { $sort: { DataOra: -1 } // Prima ordina per DataOra in modo decrescente }, { $group: { _id: "$IdStatoProdotto", // Raggruppa per IdStatoProdotto latestRecord: { $first: "$$ROOT" } // Prendi il primo record per ogni gruppo (cioè il più recente) } }, { $lookup: { from: 't_web_statiprodottos', localField: '_id', // Usa _id che è l'IdStatoProdotto foreignField: 'IdStatoProdotto', as: 'record' } }, { $replaceRoot: { newRoot: { $arrayElemAt: ["$record", 0] } } // Estrai il primo (e unico) record dal risultato di $lookup }, { $sort: { IdStatoProdotto: 1 } // Ordina per IdStatoProdotto, se necessario } ]; const rec = await T_WEB_StatiProdotto.aggregate(myquery); return rec; };