Предполагам, че tests.device_serial е масив, ето грешката ви:
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
Заявката във вашата отделна команда филтрира документи, където масивът „tests“ съдържа поле с име device_serial със стойност "", а не само полетата в масива.
За да постигнете това, което искате, можете да използвате рамка за агрегиране, да развиете масива към множество документи, да филтрирате и групирате по нула с команда $addToSet, за да получите различни стойности.
Ето запитването:
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);