sql >> Base de Datos >  >> NoSQL >> MongoDB

Clasificación condicional de Mongodb

Cree un campo virtual que represente un valor para las entradas que deben mostrarse en la parte superior de la lista, luego ordene las entradas según ese campo. Puede usar $addFields y $cond operadores para lograrlo.

La implementación sería algo así:

// ...
{
  "$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,
  },
},
// ...

Tenga en cuenta que $addField solo funciona en MongoDB 3.4 y posteriores. Además, el código de los fragmentos puede contener errores.