Tengo dos tablas de proveedor y de proveedorOrg. Necesito devolver la lista basada en los criterios de la tabla de vendorOrg en cuanto a la categoría.
const vendors = [{ "name" : "Alfred", "location" : "FH", "vendorOrgId" : "1" }, { "name" : "Alfred", "location" : "ADH", "vendorOrgId" : "2" }, { "name" : "Alfred", "location" : "AFF", "vendorOrgId" : "41" }] const vendorOrg = [ { "orgName" : "star super market", "vendorOrgId" : "1", "category" : "grocery", "status" : "active" }, { "orgName" : "Lf super market", "vendorOrgId" : "41", "category" : "grocery", "status" : "active" }, { "orgName" : "Fresh mart", "vendorOrgId" : "2", "category" : "Milk", "status" : "active" } ]Encuentre las condiciones a continuación, 1. La tabla de proveedor de VendorOrgId debe ser la misma que la identificación de la tabla de VendorOrg. 2. El estado de la tabla de vendorOrg debe estar activo. si las condiciones anteriores son verdaderas, la i necesita una lista de proveedores por categorías, según la categoría de la tabla de vendorOrg.
{ "grocery": [{ "name": "Alfred", "location": "FH", "vendorOrgId": "1" }, { "name": "Alfred", "location": "AFF", "vendorOrgId": "41" } ], "milk": [{ "name": "Alfred", "location": "ADH", "vendorOrgId": "2" }] }¿Es posible hacerlo con mangosta? ¡Gracias!
$lookup con la colección de registros de proveedores y pase vendorOrgId a la canalización de búsqueda$match las condiciones requeridas$project para mostrar los campos obligatorios$unwind org matriz de organización$group por org category de organización y construir una matriz de vendors$group por nulo y construir una matriz en formato clave-valor$arrayToObject convertir matriz de par clave-valor en objeto$replaceRoot para reemplazar el objeto a la raíz db.vendors.aggregate([ { $lookup: { from: "vendorOrg", let: { vendorOrgId: "$vendorOrgId" }, pipeline: [ { $match: { $expr: { $eq: ["$$vendorOrgId", "$vendorOrgId"] }, status: "active" } }, { $project: { _id: 1, category: 1 } } ], as: "org" } }, { $unwind: "$org" }, { $group: { _id: "$org.category", vendors: { $push: { name: "$name", location: "$location", vendorOrgId: "$vendorOrgId" } } } }, { $group: { _id: null, vendors: { $push: { k: "$_id", v: "$vendors" } } } }, { $replaceRoot: { newRoot: { $arrayToObject: "$vendors" } } } ])