sql >> Database >  >> NoSQL >> MongoDB

Mongodb selecteer alle velden groeperen op één veld en sorteren op een ander veld

Wat u wilt, is iets dat kan worden bereikt met het aggregatieraamwerk. De basisvorm van ( die nuttig is voor anderen ) is:

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 } }

])

Zodat "groepen" op de verschillende waarden van "messageId" terwijl de $first grenswaarden voor elk van de andere velden. Als u de grootste wilt, gebruik dan $last in plaats daarvan, maar voor de kleinste of de grootste per rij is het waarschijnlijk logisch om $sort gebruik anders gewoon $min en $max als de hele rij niet belangrijk is.

Zie de MongoDB aggregate() documentatie voor meer informatie over het gebruik, evenals de documentatie over de JavaDocs- en SpringData Mongo-connector van het stuurprogramma voor meer gebruik van de aggregatiemethode en mogelijke helpers.



  1. Hoe redis-cluster te configureren bij gebruik van spring-data-redis 1.7.0.M1

  2. MongoDB HostName/URI-configuratie

  3. MongoDB:kan geen cursor gebruiken om door alle gegevens te bladeren

  4. MongoDB index/RAM-relatie