MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Tri conditionnel Mongodb

Créez un champ virtuel qui représente une valeur pour les entrées qui doivent être affichées en haut de la liste, puis triez les entrées en fonction de ce champ. Vous pouvez utiliser $addFields et $cond opérateurs pour l'accomplir.

L'implémentation ressemblerait à ceci :

// ...
{
  "$addFields": {
    "isFeaturedSort": {
      "$cond": {
        "if": {
          "$and": {
            "publishDate": {
              "$gte": ISODate("2019-03-14T00:00:00.000Z"),
            },
            "$eq": ["isFeatured", true],
          },
        },
        "then": 1,
        "else": 0,
      },
    },
  },
},
{
  "$sort": {
    "isFeaturedSort": -1, // changed
    "refreshes.refreshAt": -1,
    "publishDate": -1,
    "_id": -1,
  },
},
// ...

Veuillez noter que $addField ne fonctionne que dans MongoDB 3.4 et versions ultérieures. De plus, le code des extraits peut contenir des erreurs.