MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Classificação condicional do Mongodb


Crie um campo virtual que represente um valor para as entradas que devem ser mostradas no topo da lista e classifique as entradas com base nesse campo. Você pode usar $addFields e $cond operadores para realizá-lo.

A implementação seria algo assim:
// ...
{
  "$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,
  },
},
// ...

Observe que $addField só funciona no MongoDB 3.4 e além disso, o código de trechos pode conter erros.