Tengo dos modelos de mongodb de la siguiente manera.

const CompanySchema = new Schema(
  {   
    sections: [{
      name: { type: String },
      budgets: [{ // indicates from CalcSchema
        index: { type: Number },
        title: { type: String },
        values: [Number],
        sum: { type: Number, default: 0 },
      }],
    }]
  },
  { timestamps: true }
);

const CalcSchema = new Schema({
    budget: {
        type: Schema.Types.ObjectId, // I want to populate this field. this indicates budget document in Company model
        ref: "Company.sections.budgets" //it's possible in mongoose?
    },
    expense: {
        type: Number,
        default: 0
    }
});

El campo de presupuesto indica uno de los campos de presupuestos en CompanySchema. Entonces quiero completar cuando obtengo los datos de Calc. Pero no sé cómo rellenar el documento incrustado.

Intenté establecer el valor de referencia en ref: "Company.sections.budgets". pero no funciona.

Por favor, cualquiera que me ayude.

1
Daniel.Wang 20 ene. 2021 a las 10:12

1 respuesta

La mejor respuesta

Finalmente, encontré la respuesta yo mismo.

Hay un complemento útil para ello.

https://github.com/QuantumGlitch/mongoose-sub-references-populate#readme

Y me enteré de que la estructura de mi esquema estaba mal. Es anti-patrón en mongodb.

1
Daniel.Wang 20 ene. 2021 a las 08:04