sql >> Database >  >> NoSQL >> MongoDB

Sorteer op queryresultaten gebaseerde desc-waarde van genest subdocument in array Mongoose/Mongodb

We kunnen array niet direct sorteren, maar aggregatie helpt het

  • $unwind helpt bij het de-structureren van de array
  • $sort helpt bij het sorteren zoals u wilt
  • $group helpt bij het hergroeperen van de gedestructureerde array

Mongo-script wordt hieronder gegeven

db.collection.aggregate([
  {
    "$match": {
      "serviceAreas.slug": "nashville"
    }
  },
  {
    $unwind: "$serviceAreas"
  },
  {
    $sort: {
      "serviceAreas.totalClosedSales": -1
    }
  },
  {
    $addFields: {
      total: "$serviceAreas.totalClosedSales"
    }
  },
  {
    $sort: {
      total: -1
    }
  },
  {
    $group: {
      _id: "$_id",
      mlsId: {
        $first: "$mlsId"
      },
      firstName: {
        $first: "$firstName"
      },
      lastName: {
        $first: "$lastName"
      },
      slug: {
        $first: "$slug"
      },
      serviceAreas: {
        $push: "$serviceAreas"
      }
    }
  }
])

Werkende Mongo-speeltuin




  1. MongoDB - Creëer een relatie

  2. Vreemde reactie bij het vinden van documenten in MongoDB met Mongoose in Node.js

  3. Rails Mongoid kan niet verifiëren - mislukt met fout 13:niet geautoriseerd voor query op my_db.my_collection

  4. mongodb en mongomapper