Recibo un error de límite de tamaño de memoria mientras ejecuto varias subcanalizaciones en $facet. Alguien puede ayudarme en este tema. Escenario: Tengo un trabajo de corona que se ejecuta una vez al día. Quiero ejecutar múltiples canalizaciones usando $facet contra una colección con millones de documentos cada vez que se activa el trabajo.
[ { $facet: { query1: [pipeline_1], query2: [pipeline_2], query3: [pipeline_3] ... query_n: [pipeline_n] }, }, { $merge:{ into: some_collection} } ] db.collection.aggregate([], {allowDiskUse: true}); , pero sigue recibiendo el mismo error. ¿Cuál puede ser el trabajo en torno a esto. Por favor ayuda.
En la mayoría de los casos, el uso allowDiskUse debería eliminar este error, por eso sospecho que está usando la sintaxis incorrecta. Dependiendo de su versión de Mongo, existen algunaslimitaciones estrictas en ciertos operadores como $graphLookup , estos operadores siempre tendrán un error de memoria independientemente del uso del indicador allowDiskUse .
Suponiendo que no use ninguno de estos operadores, allowDiskUse funcionará, aquí hay un ejemplo de sintaxis para el controlador nodejs :
db.collection.aggregate([], {allowDiskUse: true}); Si usted es $graphLookup o uno de los otros operadores limitados, entonces no hay mucho que pueda hacer. Comenzaría dividiendo estas etapas $facet en canalizaciones separadas. Si el problema persiste, deberá optimizar la agregación o encontrar un enfoque diferente.