MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

$elemMatch с distinct

Предполагам, че tests.device_serial е масив, ето грешката ви:

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

Заявката във вашата отделна команда филтрира документи, където масивът „tests“ съдържа поле с име device_serial със стойност "", а не само полетата в масива.

За да постигнете това, което искате, можете да използвате рамка за агрегиране, да развиете масива към множество документи, да филтрирате и групирате по нула с команда $addToSet, за да получите различни стойности.

Ето запитването:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да намеря в mongodb до последния елемент от масив?

  2. c# mongodb търсене, чувствително към главни и малки букви

  3. Как Trello се справя с пренареждането на карти, списъци, контролни списъци и т.н

  4. Свързване към MongoDB Atlas от функции на firebase

  5. Как да направите вложени заявки в MongoDb, които работят като вложени заявки за избор на Sql