संपूर्ण संग्रह पर पुनरावृति करें, और वहां मौजूद फ़ील्ड की संपूर्ण संख्या ज्ञात करें
अब आप कुंजी को मानों में बदलने और उन्हें गिनने के लिए एग्रीगेशन ऑपरेटर $objectToArray (SERVER-23310) का उपयोग कर सकते हैं। यह ऑपरेटर MongoDB v3.4.4+
. में उपलब्ध हैउदाहरण के लिए:
db.collection.aggregate([
{"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}},
{"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}},
{"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])
पहला चरण $project
फ़ील्ड गिनने के लिए सभी कुंजियों को सरणी में बदलना है। दूसरा चरण $group
संग्रह में कुंजियों/फ़ील्ड की संख्या, संसाधित किए गए दस्तावेज़ों की संख्या का योग है। तीसरा चरण $project
दस्तावेज़ों की कुल संख्या के साथ फ़ील्ड की कुल संख्या घटा रहा है (जैसा कि आप _id
के लिए गिनना नहीं चाहते हैं )
अंतिम चरण में औसत की गणना करने के लिए आप आसानी से $avg जोड़ सकते हैं।