sql >> Database >  >> NoSQL >> MongoDB

mongodb voegt teller toe aan elk opgehaald document

Hoewel het antwoord genoemd door @prasad_ lijkt te werken, heeft $unwind sinds Mongodb 3.2 een ArrayIndex-optie opgenomen die het gemakkelijker maakt om te bereiken:

db.collection.aggregate([
  {
    $group: {
      _id: null,
      data: {
        $push: "$$ROOT"
      }
    }
  },
  {
    $unwind: {
      path: "$data",
      includeArrayIndex: "counter",

    }
  },
  {
    $replaceRoot: {
      newRoot: {
        $mergeObjects: [
          "$data",
          {
            counter: {
              $add: [
                "$counter",
                1
              ]
            }
          }
        ]
      }
    }
  }
])

De laatste fase is hier om uw documenten opnieuw vorm te geven en 1 toe te voegen aan elke teller, omdat deze op 0 is gebaseerd (gebaseerd op array-index)

Je kunt het hier testen.



  1. Redis / Haal alle sleutels en waarden op uit redis met prefix

  2. DisabledBackend:grillig gedrag met selderij, redis en kolf

  3. Resultaten beperken in MongoDB maar toch de volledige telling krijgen?

  4. Het valideren van de uniciteit van een ingesloten document dat door het bovenliggende document in mangoest wordt begrensd