Угадай test.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"}
}
},
]
);