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

Mongodb избира всички полета, групирани по едно поле и сортиране по друго поле

Това, което искате, е нещо, което може да бъде постигнато с рамката за агрегиране. Основната форма на (която е полезна за другите) е:

db.collection.aggregate([

    // Group by the grouping key, but keep the valid values
    { "$group": {
        "_id": "$chainId",
        "docId": { "$first": "$_id" },
        "messageId": { "$first": "$messageId" },
        "createOn": { "$first": "$createdOn" }
    }},

    // Then sort
    { "$sort": { "createOn": -1 } }

])

Така че „групира“ по отделните стойности на „messageId“, докато взема $first гранични стойности за всяко от другите полета. Като алтернатива, ако искате най-големия, използвайте $последен вместо това, но за най-малкия или най-големия по ред вероятно има смисъл да $sort първо, в противен случай просто използвайте $ мин и $max ако целият ред не е важен.

Вижте MongoDB aggregate() документация за повече информация относно употребата, както и документация на драйвера JavaDocs и SpringData Mongo конектор за повече употреба на агрегатния метод и възможни помощни средства.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $anyElementTrue

  2. NoSQL поточно предаване на данни с MongoDB и Kafka

  3. Пролетното стартиране се опитва да се свърже с mongo при добавяне на зависимост от mongo-java-driver maven

  4. Как да премахнете минималната стойност в mongodb за група?

  5. sailsjs използва mongodb без ORM