Gissar tests.device_serial är en array, här är ditt misstag :
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
Frågan i ditt distinkta kommando är att filtrera dokument där arrayen "test" innehåller ett fält med namnet device_serial med värdet "", och inte bara fälten i array.
För att uppnå vad du vill kan du använda aggregeringsramverk, varva ner array till flera dokument, filtrera och gruppera efter null med ett $addToSet-kommando för att få distinkta värden.
Här är frågan:
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);