sql >> Base de Datos >  >> NoSQL >> MongoDB

Elem match está devolviendo todos los datos, mientras que solo necesito los datos seleccionados

$elemmatch(consulta) devuelve todas las filas de una matriz cuando hay al menos una fila que coincide con los criterios de consulta.

$elemMatch(proyección) devuelve solo la primera fila de todas las filas coincidentes cuando se usa como proyección.

Puede obtener fácilmente todas las filas coincidentes utilizando el operador de agregación de matrices $filtro .

En este escenario, los detalles del producto se filtrarán en función de los criterios aprobados.

aggregate([{
    $match: {
        "project_code": 'usha-fos'
    }
}, {
    $project: {
        "agency_code": 1,
        "client_code": 1,
        "project_code": 1,
        "product_details": {
            "$filter": {
                "input": "$product_details",
                "as": "result",
                cond: {
                    $eq: ["$$result.Division", "Electric Fans"]
                }
            }
        }
    }
}])