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

mongodb přidat čítač ke každému načtenému dokumentu

Ačkoli se zdá, že odpověď zmiňovaná @prasad_ funguje, $unwind od Mongodb 3.2 obsahuje možnost ArrayIndex, která usnadňuje dosažení:

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

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

Poslední fáze je zde jen proto, aby přetvořila vaše dokumenty a přidala 1 ke každému čítači, protože je založen na 0 (na základě indexu pole)

Můžete to otestovat zde.



  1. mongodb:jak mohu vidět dobu provedení souhrnného příkazu?

  2. MongoDB $anyElementTrue

  3. Mongo Dává „chybu duplicitního klíče“ na nejedinečná pole

  4. MongoDB Object.bsonSize()