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

Mongodb vælg alle felter grupper efter et felt og sorter efter et andet felt

Det, du ønsker, er noget, der kan opnås med aggregeringsrammen. Den grundlæggende form for (som er nyttig for andre) er:

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

])

Så "grupperer" på de forskellige værdier af "messageId", mens du tager $first grænseværdier for hvert af de andre felter. Alternativt, hvis du vil have den største, så brug $last i stedet, men for enten den mindste eller den største efter række giver det sandsynligvis mening at $sort først, ellers skal du bare bruge $ min og $max hvis hele rækken ikke er vigtig.

Se MongoDB aggregate() dokumentation for mere information om brug, samt driver JavaDocs og SpringData Mongo connector dokumentation for mere brug af den samlede metode og mulige hjælpere.



  1. MongoDB forskelle mellem NumberLong og simple Integer?

  2. MONGODB [DEBUG] cursor.refresh() for cursor 7078636577051629992

  3. MongoDb Aggregation:Hvordan kan jeg gruppere en array-1 baseret på en anden array-2, når den gives array-1 og array-2?

  4. MongoDB:Hvordan opdaterer man flere dokumenter med en enkelt kommando?