¿Cómo completo un índice dentro de una lista y luego cambio el nombre de uno de los índices? Digamos que tengo el siguiente esquema
const supplierSchema = new mongoose.Schema({ name: String, address: String, ... (19 other fields) supplier_id: mongoose.Schema.Types.ObjectId, }); const itemsSchema = new mongoose.Schema({ name: String, supplier_id: mongoose.Schema.Types.ObjectId, item_id: mongoose.Schema.Types.ObjectId, }); const receiptSchema = new mongoose.Schema({ items: [itemSchema] receipt_id: mongoose.Schema.Types.ObjectId, }); const Receipt = mongoose.model('Photo', photoSchema);Mi recibo se llena de tal manera que
Receipt.findById(<insertID>) currently gives: { receipt_id: ObjectId("..."), items: [ { name: "...", supplier_id: ObjectId("..."), item_id: ObjectId("...") }, { name: "...", supplier_id: ObjectId("..."), item_id: ObjectId("...") } ], receipt_id: ObjectId("..."), } Me gustaría que completara el supplier_id con el name y address . Y luego cambie el nombre del supplier_id a supplier .
usar agregado con $búsqueda
Receipt.aggregate([ {$match : {_id : <insertID>} }, { $lookup : { from: 'supplier', localField: 'items.supplier_id', foreignField: '_id', as: 'supplier' } }, { $unwind : { path : "supplier" } } ])