sql >> Databáze >  >> NoSQL >> MongoDB

$elemMatch s výrazem

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"}
            }
        },
    ]
);



  1. Doplňte chybějící data do záznamů

  2. Redis / Node.js – 2 klienti (1 pub/sub) způsobující problémy se zápisy

  3. Připojení k DocumentDB z AWS Lambda pomocí Pythonu

  4. Mongo:vyhledejte vnořený dokument bez tečkové notace