¿Puede alguien ayudarme a hacer una consulta de unión?
Tengo todos los trabajos que se crearon entre un período de tiempo.
[{ _id: '61be471835364400005ee66a', created: '2021-12-18T20:39:52.279Z', company: '61be44cb8c18cd0000be2048' }]Obtuve esto haciendo una consulta agregada:
const matchByUserStage = { $match: { user: session?.user?.email, created: { $lte: new Date(end), $gte: new Date(start), }, }, }; const projectStage = { $project: { _id: { $toString: '$_id', }, created: { $toString: '$created' }, company: { $toString: '$company' }, }, };Tengo una colección de empresas y estoy tratando de obtener el nombre de la EMPRESA en la consulta, en lugar de tener que obtenerlo del lado del cliente. Ya tengo el _id en el resultado de la consulta agregada. He estado tratando de hacer esto:
const jobs = await Job.aggregate([ matchByUserStage, projectStage, {$lookup: { from: 'Company', localField: 'company', foreignField: '_id', as: 'result' }; ]);Estaba pensando que esto 1) obtendría la empresa que tiene un _id que coincide con nuestro ID de objeto 'empresa' anterior y 2) lo guardaría en el campo de resultados. ¡No hay nada allí, a pesar de que la identificación del objeto coincide! ¿Podría alguien ayudarme a explicarme cómo debería funcionar esto? Podría hacerlo muy fácilmente, creo que en SQL.
El esquema de la empresa es:
const CompanySchema = new mongoose.Schema({ name: String, domain: { protocol: String, url: String }, logo: String, location: String, remote: String, user: { required: true, type: String, }, orb_name: String, orb_num: Number, orb_address: { address1: String, address2: String, city: String, state: String, zip: String, country: String, }, industry: String, categories: [{ name: String, weight: Number }], employees_range: String, year_founded: Number, description: String, created: { type: String, required: true }, });y un ejemplo de artículo de empresa es:
{ _id: 61be44cb8c18cd0000be2048, created: 'Sat Dec 18 2021 12:30:03 GMT-0800', user: 'scooter@scoot.com', name: 'Facebook', remote: 'friendly', location: '1601 WILLOW RD MENLO PARK Menlo Park CA 94025 United States US', logo: 'https://logo.clearbit.com/facebook.com',}