Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

404
Vistas
¿Cómo hacer una unión interna con mongodb, mongoose y nestjs?

Tengo un sistema con mongodb genéricoizado por mongoose en nest js, ¿cómo traigo datos de clientes y productos en la misma solicitud?

en la base de datos los datos son así:

 "_id": "621d2137abb45e60cf33a2d4", "product_id": [ "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb" ], "client_id": "621d19f890ec693f1d553eff", "price": 597, "__v": 0

mi servicio:

 findAll() { return this.sealsModel.find().exec(); }

De esta manera no funcionó:

 findAll() { var a = this.sealsModel.find().exec() return this.sealsModel.aggregate([{ $lookup: { from: 'seals', localField: 'client_id', foreignField: '_id', as: 'client' } }]) .exec() }

pero devuelve esto:

 "_id": "621d3e0a1c3bcac85f79f7cc", "product_id": [ "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb", "621cedbf79d68fb4689ef0cb" ], "client_id": "621d19f890ec693f1d553eff", "price": 597, "__v": 0, "client": []
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una alternativa al operador $lookup de Mongo es la función de populate de Mongoose. Para usarlo correctamente, primero debe actualizar su modelo.

Debería tener un modelo de cliente que se vea así:

 // /models/Client.js const mongoose = require("mongoose"); const clientSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, ... // the rest of your fields }); module.exports = mongoose.model('Client', clientSchema);

La clave para notar aquí es la última línea. Se hace referencia al modelo como "Cliente".

El cambio que tienes que hacer es principalmente en tu modelo Seal :

 // /models/Seal.js const mongoose = require("mongoose"); const sealSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, client_id: { type: mongoose.Schema.Types.ObjectId, ref: "Client" // We use the same name we gave to our client model in the last file } }); module.exports = mongoose.model('Seal', sealSchema);

Luego, en su código, debería poder usar:

 const Seal = require("YOUR_PATH/models/Seal.js") Seal.find().populate("client_id")

Una nota al margen importante: su modelo muestra la ID de mongo como una cadena

 "_id": "621d3e0a1c3bcac85f79f7cc", "client_id": "621d19f890ec693f1d553eff", <---

Asegúrese de que el campo client_id sea del tipo ObjectId o no funcionará:

 "client_id": ObjectId("621d19f890ec693f1d553eff")
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda