Hádat testy.device_serial je pole, tady je vaše chyba:
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
Dotaz ve vašem odlišném příkazu filtruje dokumenty, které pole 'tests' obsahuje pole s názvem device_serial s hodnotou "", a nejen pole v poli.
Chcete-li dosáhnout toho, co chcete, můžete použít agregační rámec, rozvinout pole na více dokumentů, filtrovat a seskupovat podle null pomocí příkazu $addToSet, abyste získali odlišné hodnoty.
Zde je dotaz:
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);