Zgadywanie testing.device_serial to tablica, oto Twój błąd:
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
Zapytanie w Twoim odrębnym poleceniu filtruje dokumenty, w których tablica „testy” zawiera pole nazwane device_serial z wartością "", a nie tylko pola w tablicy.
Aby osiągnąć to, co chcesz, możesz użyć struktury agregacji, rozwinąć tablicę do wielu dokumentów, filtrować i grupować według wartości null za pomocą polecenia $addToSet, aby uzyskać różne wartości.
Oto zapytanie :
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);