sql >> Databáze >  >> NoSQL >> MongoDB

Podmíněné řazení Mongodb

Vytvořte virtuální pole, které představuje hodnotu pro položky, které by se měly zobrazit v horní části seznamu, a poté položky seřaďte na základě tohoto pole. Můžete použít $addFields a $cond operátory, aby to splnili.

Implementace by byla asi tato:

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

Všimněte si prosím, že $addField fungují pouze v MongoDB 3.4 a dalších. Také kód úryvků může obsahovat chyby.




  1. Jak třídit dílčí dokumenty v poli pole?

  2. Jak získat všechny odpovídající položky z řady objektů v MongoDB?

  3. Jak plyne z tohoto scénáře?

  4. Jak načíst 100 milionů záznamů do MongoDB pomocí Scala pro testování výkonu?