Estoy escribiendo una consulta de agregación en la que quiero realizar una unión en MongoDB entre dos colecciones y para eso estoy usando $búsqueda, ahora mi pregunta es ¿$búsqueda cambia el orden de los resultados por orden o no? porque si hace eso, entonces necesito poner mi clasificación después de $ buscar y si no, ¿puedo usarla antes de $ buscar?
Mi código se da a continuación
brandmodel.aggregate( {$project: { '_id':0, 'brand_id': 1, 'brand_name':1, 'brand_icon':1, 'banner_image': 1, 'weight': 1} }, {$lookup: {from: "student_coupons",localField: "brand_id",foreignField: "brand_id",as: "coupons"}}, {$unwind : "$coupons"}, {$sort: {weight: -1, "coupons.time_posted": -1}}, // SHOULD I WRITE THIS BEFORE LOOKUP OR AFTER LOOKUPEn MongoDB 3.6, $lookup tiene una forma más expresiva en la que puede acceder a los campos del documento de origen y realizar más operaciones de canalización dentro de la etapa de $lookup. Ver documentación
Como ejemplo,
db.movies.aggregate([ { $match : { _id : ObjectId("573a1390f29313caabcd414c")} }, { $lookup : {from: "comments", let: {'id' : '$_id' }, pipeline: [ { $match : { '$expr': { '$eq': [ '$movie_id', '$$id' ] } }}, { $sort: {'date': -1} } ], as: "comments" } } ]) Debe declarar los campos que desee de la colección de origen en let , haga la coincidencia según sea necesario (esto es opcional). Luego, puede usar las etapas de pipeline que necesita aplicar en la colección que se está buscando.