MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Bedingte Mongodb-Sortierung

Erstellen Sie ein virtuelles Feld, das einen Wert für die Einträge darstellt, die oben in der Liste angezeigt werden sollen, und sortieren Sie dann die Einträge basierend auf diesem Feld. Sie können $addFields verwenden und $cond Betreiber, um dies zu erreichen.

Die Implementierung würde in etwa so aussehen:

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

Bitte beachten Sie das $addField funktionieren nur in MongoDB 3.4 und höher. Auch der Snippets-Code kann Fehler enthalten.