sql >> Database >  >> NoSQL >> MongoDB

Tel velden in een MongoDB-verzameling

Herhaal de hele verzameling en vind het volledige aantal velden dat er is

Nu kunt u de aggregatie-operator $objectToArray (SERVER-23310) gebruiken om sleutels om te zetten in waarden en ze te tellen. Deze operator is beschikbaar in MongoDB v3.4.4+

Bijvoorbeeld:

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

Eerste fase $project is om alle sleutels in een array te veranderen om velden te tellen. Tweede fase $group is om het aantal sleutels/velden in de verzameling op te tellen, ook het aantal verwerkte documenten. Derde fase $project trekt het totale aantal velden af ​​van het totale aantal documenten (omdat u niet wilt tellen voor _id ).

U kunt eenvoudig $ avg toevoegen om voor het gemiddelde te tellen in de laatste fase.



  1. $project:Is het mogelijk om toegang te krijgen tot een eigenschap van een expressieresultaat in slechts één enkele fase?

  2. Gegevens ophalen uit verzameling b niet in verzameling a in een MongoDB-shellquery

  3. MongoDB C#-stuurprogramma - Negeer velden bij binding

  4. MongoDB $split