sql >> Database >  >> NoSQL >> MongoDB

$elemMatch met distinct

Raden dat tests.device_serial een array is, dit is je fout:

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

Query in uw distinct-commando is het filteren van documenten waar de array 'tests' bevat een veld met de naam device_serial met de waarde "", en niet alleen de velden in de array.

Om te bereiken wat je wilt, kun je een aggregatieraamwerk gebruiken, array afwikkelen naar meerdere documenten, filteren en groeperen op null met een $addToSet-opdracht om verschillende waarden te krijgen.

Hier is de vraag:

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



  1. Alleen-lezen bestandssysteem bij poging mkdir /data/db op Mac

  2. Een HASH opslaan in Redis op een rails-app

  3. Gefeliciteerd met je verjaardag Apache HBase! 10 jaar veerkracht, stabiliteit en prestaties

  4. Bestelling toevoegen door @query te gebruiken in mongodb-repository