Estoy buscando una solución desde hace 3 horas y aún no la consigo.
Tengo la siguiente colección:
{text: 'random text 1', indexes:[1,2] }, {text: 'random text 2', indexes:[1,3] }, {text: 'random text 3', indexes:[2,4] }, y me gustaría tener solo los documentos que tienen todos los valores de índice en una matriz determinada como, por ejemplo [1,2,4]
usando el ejemplo anterior, me gustaría tener el siguiente resultado:
{text: 'random text 1', indexes:[1,2] }, {text: 'random text 3', indexes:[2,4] }, [1,2] está en [1,2,4] -> Aceptar
[1,3] no está en [1,2,4] debido a 3 -> No está bien
[1,4] está en [1,2,4] -> Aceptar
¿Alguna idea? ¡gracias por tu respuesta! :)
Puedes usar una de estas etapas de $match :
$expr : { "$match": { "$expr": { "$setIsSubset": ["$indexes",[1,2,4]] } } }Ejemplo aquí
$elemMatch y doble negación ( $not y $nin ): { "$match": { "indexes": { "$not": { "$elemMatch": { "$nin": [1,2,4] } } } } }Ejemplo aquí