Estoy tratando de consultar una colección y ordenarla por un campo que no existe en todos los registros. Por ejemplo, estoy llamando a esto:
exports.getProductPriceByLosers = (req,res) => { Market.find() .sort({ "analytics.one_day_change": 1 }) .select('analytics.one_day_change name') .limit(10) .exec((err, data) => { if (err){ return res.status(400).json({ error: 'No products found' }) } res.json(data) }) }Sin embargo, el campo 'one_day_change' no existe en todos los registros, por lo que el resultado que obtengo es aproximadamente 20 productos primero sin ese campo, y luego devuelve los productos que necesito con el orden correcto. ¿Hay alguna manera de decirle a Mongo que no devuelva esos documentos que no necesito/no tengo los datos que necesito?
¡¡Gracias!! X
Puede usar $exists: true para obtener solo los documentos donde existe ese campo.
exports.getProductPriceByLosers = (req,res) => { Market.find({"analytics.one_day_change":{ "$exists": true}}) .sort({ "analytics.one_day_change": 1 }) .select('analytics.one_day_change name') .limit(10) .exec((err, data) => { // ... }) }Mira este ejemplo