sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb betinget sortering

Opret et virtuelt felt, som repræsenterer en værdi for de poster, der skal vises øverst på listen, og sorter derefter poster baseret på det felt. Du kan bruge $addFields og $cond operatører til at opnå det.

Implementeringen ville være sådan her:

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

Bemærk venligst, at $addField virker kun i MongoDB 3.4 og yderligere.også kan kodestykkerne indeholde fejl.




  1. Forbindelse nægtet til MongoDB fejl nr. 111

  2. lukning af mongodb-forbindelse i node.js, mens der indsættes en masse data

  3. Hvorfor Spring ReactiveMongoRepository ikke har en gemmemetode til Mono?

  4. Er der nogen låsemekanisme i Azure Redis Cache, mens du opdaterer et element?