sql >> Databasteknik >  >> NoSQL >> MongoDB

Räkna fält i en MongoDB-samling

Iterera över hela samlingen och hitta hela antalet fält som finns

Nu kan du använda aggregeringsoperatorn $objectToArray (SERVER-23310) för att omvandla nycklar till värden och räkna dem. Denna operatör är tillgänglig i MongoDB v3.4.4+

Till exempel:

db.collection.aggregate([
         {"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}}, 
         {"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}}, 
         {"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])

Första steget $project är att förvandla alla nycklar till array för att räkna fält. Andra steget $group är att summera antalet nycklar/fält i samlingen, även antalet behandlade dokument. Tredje steget $project subtraherar det totala antalet fält med det totala antalet dokument (eftersom du inte vill räkna för _id ).

Du kan enkelt lägga till $avg för att räkna för genomsnittet på det sista steget.



  1. Ställ in Mongo Timeout i Spring Boot

  2. Hur byter jag namn på fält när jag utför sökning/projektion i MongoDB?

  3. DigitalOcean pod har obundna omedelbara PersistentVolumeClaims

  4. Hur man ställer in/får pandas.DataFrame till/från Redis?