sql >> Database teknologi >  >> NoSQL >> MongoDB

$elemMatch med distinkt

Gætter tests.device_serial er et array, her er din fejl :

 db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})

Forespørgsel i din distinkte kommando filtrerer dokumenter, hvor arrayet 'tests' indeholder et felt ved navn device_serial med værdien "", og ikke kun felterne i array.

For at opnå det, du ønsker, kan du bruge aggregeringsramme, afvikle array til flere dokumenter, filtrere og gruppere efter null med en $addToSet-kommando for at få forskellige værdier.

Her er forespørgslen:

db.sessions.aggregate(
    [
        {
            $unwind: {
                path : "$tests"
            }
        },
        {
            $match: {
            "tests.device_serial":{$ne:""}
            }
        },
        {
            $group: {
              "_id":null,
                "device_serials":{$addToSet:"$tests.device_serial"}
            }
        },
    ]
);



  1. Rails Mongoid kan ikke godkendes - mislykkedes med fejl 13:ikke autoriseret til forespørgsel på my_db.my_collection

  2. Er der en enkel måde at eksportere data fra en app, der er installeret med meteorer?

  3. Returner kun specifikke felter fra projektion array underdokument

  4. Sådan bruger du en SQL LIKE-sætning i MongoDB