Estoy tratando de realizar una agregación usando $búsqueda entre dos campos de tipo ObjectId . Ya verifiqué mis datos y debería devolver algo. Además, los esquemas definen los campos como ObjectId, por lo que, si no me equivoco, no debería necesitar convertir el tipo de datos como he visto en algunas publicaciones. Aquí está mi consulta:
db.workerlocationcontexts.aggregate([ { $lookup: { from: "LocationSensors", localField: "sensor", foreignField: "_id", as: "test" } } ])Aquí están mis colecciones/datos de muestra:
WorkerLocationContexts
{ "_id":{"$oid":"615676c885ccad55a493503b"}, "updatedAt":{"$date":"2021-10-01T02:47:36.207Z"}, "createdAt":{"$date":"2021-10-01T02:47:36.207Z"}, "sensor":{"$oid":"6181e5f83fca98374cf901fd"}, "worker":{"$oid":"6153dcfb58ad722c747eb42d"}, "__v":0 } LocationSensor
{ "_id":{"$oid":"6181e5f83fca98374cf901fd"}, "name":"Location Sensor 1", "description":"Location sensor for Location 2", "location": "$oid":"6181df3b3fca98374cf901fb"}, "trackerType":"RFID", "sensorType":"ENVIRONMENT", "type":"LOCATION", "__v":0 } El resultado que obtengo son todos mis WorkerLocationContexts , pero el campo "prueba" regresa como una matriz vacía.
¿Alguien me puede ayudar?
¡Gracias por adelantado!
from field into $lookup parece distinguir entre mayúsculas y minúsculas, por lo que es un problema común el nombre de la colección escrito en ese campo.
Un problema común es no agregar la "s" final al usar mongoose. Os, como en este caso, el uso de letras mayúsculas, yo usando from: locationsensors debería funcionar como este ejemplo
El campo from tiene que ser el mismo que el nombre de la colección, de lo contrario, Mongo no puede encontrar la colección deseada.