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

$elemCoincidir con distinto

Adivinando tests.device_serial es una matriz, aquí está su error:

 db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})

La consulta en su comando distintivo está filtrando documentos donde la matriz 'pruebas' contiene un campo llamado device_serial con un valor de "", y no solo los campos en la matriz.

Para lograr lo que desea, puede usar el marco de agregación, desenredar la matriz en varios documentos, filtrar y agrupar por nulo con un comando $addToSet para obtener valores distintos.

Aquí está la consulta:

db.sessions.aggregate(
    [
        {
            $unwind: {
                path : "$tests"
            }
        },
        {
            $match: {
            "tests.device_serial":{$ne:""}
            }
        },
        {
            $group: {
              "_id":null,
                "device_serials":{$addToSet:"$tests.device_serial"}
            }
        },
    ]
);