Menebak tes.device_serial adalah array, ini kesalahan Anda :
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
Kueri dalam perintah Anda yang berbeda memfilter dokumen tempat larik 'menguji' berisi bidang bernama device_serial dengan nilai "", dan bukan hanya bidang dalam array.
Untuk mencapai apa yang Anda inginkan, Anda dapat menggunakan kerangka kerja agregasi, melepas array ke beberapa dokumen, memfilter dan mengelompokkan menurut null dengan perintah $addToSet untuk mendapatkan nilai yang berbeda.
Berikut pertanyaannya :
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);