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

Obtenga un subconjunto de matriz en mongodb usando una fuente de matriz

Simplemente necesita $filter la matriz y mantener solo aquellos subdocumentos donde el valor es un subconjunto de su matriz de entrada. Tenga en cuenta que valor aquí hay una matriz de elementos donde el elemento es el campo incrustado value .

let fruits = ["apple","banana","coconut"];

db.collection.aggregate([
    { "$project": { 
        "Element": { 
            "$filter": { 
                "input": "$Element", 
                "as": "el", 
                "cond": { 
                    "$setIsSubset": [ [ "$$el.Value" ], fruits ] 
                 }
            }
        }
    }}
])

A partir de MongoDB 3.4* puede usar $in operador en el $project escenario.

db.collection.aggregate([
    { "$project": { 
        "Element": { 
            "$filter": { 
                "input": "$Element", 
                "as": "el", 
                "cond": { 
                    "$in": [ "$$el.Value", fruits ] 
                 }
            }
        }
    }}
])

*Versión inédita de MongoDB en el momento de escribir este artículo