Estoy luchando para resolver este problema. Uso mongoose en un backend de Node.js y necesito encontrar el promedio de un campo en un gran conjunto de datos. Hay alrededor de 1.500.000 documentos en la base de datos, por eso intenté usar la función model.aggregate() :
const vxxEntry = require("../model/vxxEntry"); const getAvg = async function () { return vxxEntry.aggregate([ { $group: { _id: null, avgVolume: {$avg: "$volume"} } }, ], { allowDiskUse: true } ) }El modelo se ve así:
const mongoose = require("mongoose"); const {Decimal128} = require("mongodb"); const vxxEntrySchema = new mongoose.Schema({ timestamp: { type: Date}, price: { type: Decimal128}, volume: { type: Number}, exchange: { type: String}, }); module.exports = mongoose.model("vxxEntry", vxxEntrySchema); El problema es que la función getAvg() siempre devuelve:
[ { _id: null, avgVolume: null } ]¡Agradecido por cualquier solución!
Editar
¡Lo mismo sucede cuando ejecuto la consulta en el shell nativo de mongo!
Ejecutar lo siguiente devuelve una gran variedad de objetos, por lo que creo que la colección y el campo existen.
{ $group: { _id: "$volume" } }