MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb dodaje licznik do każdego pobranego dokumentu

Chociaż odpowiedź wspomniana przez @prasad_ wydaje się działać, $unwind ma od Mongodb 3.2 opcję includeArrayIndex, która ułatwia osiągnięcie:

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

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

Ostatni etap jest tutaj, aby zmienić kształt dokumentów i dodać 1 do każdego licznika, ponieważ jest on oparty na 0 (na podstawie indeksu tablicy)

Możesz to przetestować tutaj.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak bezpiecznie zignorować zduplikowane błędy klucza za pomocą insert_many

  2. Jak w MongoDB zwrócić tylko część tablicy?

  3. Mongoimport pliku JSON

  4. Błąd duplikatu klucza MongoDB E11000

  5. jak odpytywać obiekty podrzędne w mongodb