es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede consultar un registro en MongoDB al usar el selector “$”.

Tengo un problema extraño cuando uso NodeJS con Mongoose al consultar un registro en MongoDB.

Tengo un archivo de modelo de producto como este:

const mongoose = require("mongoose");

const productSchema = new mongoose.Schema({
  name: String,
  brand: String,
  shorDescription: String,
  description: String,
  price: Number,
  salePercent: Number,
  rating: Number,
  color: String,
  size: [String],
});

const Product = mongoose.model("Product", productSchema);

module.exports = Product;

Y en el archivo del controlador, mi código es como este:

const Product = require("../models/product.model");

exports.getProducts = async (req, res) => {
  const products = await Product.find({ rating: { $lte: "5" } });

  console.log(products);

  res.json({
    products: products,
  });
};

Product.find({}) funciona perfectamente, devuelve todos los registros en la colección de productos.

Product.find({brand: "Nike"}) también funciona bien, devuelve todos los productos “Nike”.

Lo extraño es cuando uso el selector $ en Product.find({ rating: { $lte: "5" } }), no recibo nada mientras tengo varios productos que cumplen la condición en la colección de productos.

¡Alguien que me ayude por favor! 🙁

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Posible solución para el problema al consultar un registro en MongoDB usando NodeJS y Mongoose:

    El problema parece estar relacionado con el tipo del campo de calificación (rating) en el esquema de producto (productSchema). Se define como un número, pero en la consulta se compara con un valor de cadena “5”.

    Para solucionar el problema, el valor de comparación debe cambiarse a un número en lugar de una cadena:

    const products = await Product.find({ rating: { $lte: 5 } });
    

    Esto debería devolver todos los productos con una calificación menor o igual a 5.

    Es importante asegurarse de que el tipo de datos del campo en la colección de MongoDB coincida con el tipo de datos especificado en el esquema de Mongoose para evitar problemas similares en el futuro.

Comments are closed.