Gætter tests.device_serial er et array, her er din fejl :
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
Forespørgsel i din distinkte kommando filtrerer dokumenter, hvor arrayet 'tests' indeholder et felt ved navn device_serial med værdien "", og ikke kun felterne i array.
For at opnå det, du ønsker, kan du bruge aggregeringsramme, afvikle array til flere dokumenter, filtrere og gruppere efter null med en $addToSet-kommando for at få forskellige værdier.
Her er forespørgslen:
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);