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

mongodb fügt jedem abgerufenen Dokument einen Zähler hinzu

Obwohl die von @prasad_ erwähnte Antwort zu funktionieren scheint, hat $unwind seit Mongodb 3.2 die includeArrayIndex-Option, die es einfacher macht, Folgendes zu erreichen:

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

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

Die letzte Stufe dient nur dazu, Ihre Dokumente umzugestalten und jedem Zähler 1 hinzuzufügen, da er auf 0 basiert (basierend auf dem Array-Index)

Hier können Sie es testen.