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

MongoDB zlicza dokumenty dla każdego elementu tablicy

Możesz $unwind Twoja tablica, aby pobrać pojedynczy dokument na element, a następnie uruchom $group aby policzyć elementy:

db.collection.aggregate([
    {
        $unwind: "$elements"
    },
    {
        $group: {
            _id: "$elements",
            count: { $sum: 1 }
        }
    }
])

EDYCJA:możesz użyć dodatkowej grupy z $replaceRoot i $arrayToObject aby zwrócić identyfikatory jako klucze i zliczać jako wartości:

db.collection.aggregate([
    {
        $unwind: "$elements"
    },
    {
        $group: {
            _id: "$elements",
            count: { $sum: 1 }
        }
    },
    {
        $group: {
            _id: null,
            counts: { $push: { k: "$_id", v: "$count" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$counts" }
        }
    }
])

Plac zabaw Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose QueryStream nowe wyniki

  2. Jak działa sortowanie z indeksem w MongoDB?

  3. Nie znaleziono klasy „MongoClient”

  4. Usuwanie elementu _id z wyników Pymongo

  5. Niejednoznaczność dotycząca $geoNear w zapytaniu zbiorczym