Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
$count (accumulateur)
Nouveau depuis la version 8.0.1.
Utilisez l'$countaccumulateur au cours d'une $group étape pour renvoyer le nombre de documents de chaque groupe. Il accepte un objet vide {} comme argument.
Cette étape est différente de l'étape du $count pipeline, qui est une étape autonome qui compte tous les documents transitant par le pipeline. L'$countaccumulateur compte plutôt les documents de chaque groupe produits par$group.
Syntaxe
{ $count: {} }
Paramètres
-
L'
$countaccumulateur n'accepte aucun argument. Il accepte un objet vide{}et renvoie le nombre de documents dans chaque groupe.
Exemple (MongoDB Shell)
L'exemple suivant montre comment utiliser l'$countaccumulateur pour compter le nombre de produits dans chaque catégorie.
Créez des exemples de documents
db.products.insertMany([ { name: "Widget", category: "A" }, { name: "Gadget", category: "A" }, { name: "Doohickey", category: "B" }, { name: "Thingamajig", category: "B" }, { name: "Whatsit", category: "B" } ])
Exemple de requête
db.products.aggregate([ { $group: { _id: "$category", count: { $count: {} } } } ])
Sortie
[
{ "_id": "A", "count": 2 },
{ "_id": "B", "count": 3 }
]
Exemple d'utilisation d'un opérateur de fenêtre (MongoDB Shell)
Nouveau depuis la version 8.0.2.
L'$countaccumulateur peut également être utilisé comme opérateur de fenêtre sur $setWindowFields scène. Dans ce contexte, il renvoie le nombre de documents dans chaque fenêtre. Vous spécifiez l'opérateur dans le output champ et définissez éventuellement les limites de la fenêtre à l'aide d'un window document.
Créez des exemples de documents
db.events.insertMany([ { _id: 1, category: "A", day: 1 }, { _id: 2, category: "A", day: 2 }, { _id: 3, category: "A", day: 3 }, { _id: 4, category: "B", day: 1 }, { _id: 5, category: "B", day: 2 } ])
Exemple de requête
L'exemple suivant partitionne les documents parcategory, trie chaque partition par day et renvoie un nombre cumulé de documents depuis le début de la partition jusqu'au document en cours.
db.events.aggregate([ { $setWindowFields: { partitionBy: "$category", sortBy: { day: 1 }, output: { runningCount: { $count: {}, window: { documents: ["unbounded", "current"] } } } } } ])
Sortie
[
{ "_id": 1, "category": "A", "day": 1, "runningCount": 1 },
{ "_id": 2, "category": "A", "day": 2, "runningCount": 2 },
{ "_id": 3, "category": "A", "day": 3, "runningCount": 3 },
{ "_id": 4, "category": "B", "day": 1, "runningCount": 1 },
{ "_id": 5, "category": "B", "day": 2, "runningCount": 2 }
]
Chaque document est augmenté du nombre de documents contenus dans sa partition, y compris le document actuel. runningCount
Exemples de code
Pour afficher un exemple de code d'utilisation de l'$countaccumulateur, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser. Les exemples suivants montrent à la fois l'utilisation de l'accumulateur (in$group) et l'utilisation de l'opérateur de fenêtre (in$setWindowFields) :