Maison base de données tutoriel mysql mongodb聚合函数

mongodb聚合函数

Jun 07, 2016 pm 02:58 PM
mongodb 函数 聚合

mongodb聚合函数 1.count 这个函数很好理解,和其他数据库一样,就是做一个count操作 select count(*) from tab1 =db.tab1.count() 以上例子很好理解,但是如果在操作中有skip,limit这种操作的话,那么count会忽略掉这些操作,必须加入一个true参数 比如:d

mongodb聚合函数

 

1.count

这个函数很好理解,和其他数据库一样,就是做一个count操作

select count(*) from tab1 =db.tab1.count() 

以上例子很好理解,但是如果在操作中有skip,limit这种操作的话,那么count会忽略掉这些操作,必须加入一个true参数

比如:db.tab1.find().skip(1),limit(2).count()和db.tab1.find().count()得出的结果是一样的

必须修改为db.tab1.find().skip(1).limit(2).count(true)

2.distinct

去重函数,这个也应该很熟悉,各种关系数据库都有

具体操作:db.runCommand({"distinct":"collection","key":"xxxx"})=db.collections.distinct("xxxx");

3.group

select a,b,sum(c) csum from coll where active=1 group by a,b

 db.coll.group( {key: { a:true, b:true },

                               cond: { active:1 },

                               reduce:function(obj,prev){ prev.csum += obj.c; },

                               initial: { csum: 0 }

                               });

参数解释:

Key:group字段

Reduce:聚合函数,典型的有sum和count操作,包含两个参数,当前遍历对象以及聚合计数器

Initial:初始化计数器值

Cond:查询条件筛选选项,如果是空,那么默认对当前collection的所有行操作

Group不能在sharding中使用,结果输出不能多于10000个keys

举例:

> db.mtb1.find()

{ "_id" : ObjectId("4fb4be52aa814943b788095c"), "name" : "aaa", "score" : 77 }

{ "_id" : ObjectId("4fb4be5caa814943b788095d"), "name" : "bbb", "score" : 79 }

{ "_id" : ObjectId("4fb4be61aa814943b788095e"), "name" : "ccc", "score" : 79 }

{ "_id" : ObjectId("4fb4be69aa814943b788095f"), "name" : "ddd", "score" : 79 }

{ "_id" : ObjectId("4fb4be74aa814943b7880960"), "name" : "eee", "score" : 100 }

{ "_id" : ObjectId("4fb4be7aaa814943b7880961"), "name" : "fff", "score" : 100 }

{ "_id" : ObjectId("4fb4be82aa814943b7880962"), "name" : "ggg", "score" : 100 }

{ "_id" : ObjectId("4fb4be9eaa814943b7880963"), "name" : "hhh", "score" : 200}

 

> db.mtb1.group(

... {key:{score:true},

... reduce:function(obj,prev){prev.count++;},

... initial:{count:0}

... });

[

        {

                "score" : 77,

                "count" : 1

        },

        {

                "score" : 79,

                "count" : 3

        },

        {

                "score" : 100,

                "count" : 3

        },

        {

                "score" : 200,

                "count" : 1

        }

]

一个简单的例子,应该很明白了。其实这里group还是建立在reduce上面

4.map/reduce

          这个工具的功能可以实现以上三种任何一种,它是分两步完成,先做map,再reduce,map首先对数据进行分解映射,map执行完,紧接着会进行reduce,map后会的到key-values,像{key:[value1,value2,value3...]},然后通过reduce处理后得到key-value,也就是单一的值。

语法:

db.runCommand(

 { mapreduce : ,

   map : ,

   reduce :

   [, query : ]

   [, sort : ]

   [, limit : ]

   [, out : ]

   [, keeptemp: ]

   [, finalize : ]

   [, scope : ]

   [, verbose : true]

 }

);

query是很常用的,它用来在map阶段过滤查询条件的以限定MapReduce操作的记录范围,sort和limit集合query使用。

out指定输出结果的collections名称

Keeptemp 布尔型,默认是false,如果是true那么生成的collection是永久存在的,如果是false,那么在客户端连接关闭后,会自动删除生成的collection

Finalize一般用来计算平均数,裁剪数组,清除多余信息

query是很常用的,它用来在map阶段过滤查询条件的以限定MapReduce操作的记录范围,sort和limit集合query使用。

out指定输出结果的collections名称

Keeptemp 布尔型,默认是false,如果是true那么生成的collection是永久存在的,如果是false,那么在客户端连接关闭后,会自动删除生成的collection

Finalize一般用来计算平均数,裁剪数组,清除多余信息

{ result : ,

  counts : {

       input :  ,

       emit  : ,

       output :

  } ,

  timeMillis : ,

  ok : ,

  [, err : ]

}

result:储存结果的collection的名字

input:满足条件的数据行数

emit:emit调用次数,也就是所有集合中的数据总量

ouput:返回结果条数

timeMillis:执行时间,毫秒为单位

ok:是否成功,成功为1

err:如果失败,这里可以有失败原因

 

给出官方文档的一个例子:

$ ./mongo

> db.things.insert( { _id : 1, tags : ['dog', 'cat'] } );

> db.things.insert( { _id : 2, tags : ['cat'] } );

> db.things.insert( { _id : 3, tags : ['mouse', 'cat', 'dog'] } );

> db.things.insert( { _id : 4, tags : []  } );

 

> // map function

> m = function(){

...    this.tags.forEach(

...        function(z){

...            emit( z , { count : 1 } );

...        }

...    );

...};

 

> // reduce function

> r = function( key , values ){

...    var total = 0;

...    for ( var i=0; i

...        total += values[i].count;

...    return { count : total };

...};

 

> res = db.things.mapReduce(m,r);

> res

{"timeMillis.emit" : 9 , "result" : "mr.things.1254430454.3" ,

 "numObjects" : 4 , "timeMillis" : 9 , "errmsg" : "" , "ok" : 0}

 

> db[res.result].find()

{"_id" : "cat" , "value" : {"count" : 3}}

{"_id" : "dog" , "value" : {"count" : 2}}

{"_id" : "mouse" , "value" : {"count" : 1}}

 

> db[res.result].drop()

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Collection complète de formules de fonctions Excel Collection complète de formules de fonctions Excel May 07, 2024 pm 12:04 PM

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

Choses à noter lorsque les fonctions Golang reçoivent des paramètres de carte Choses à noter lorsque les fonctions Golang reçoivent des paramètres de carte Jun 04, 2024 am 10:31 AM

Lors du passage d'une carte à une fonction dans Go, une copie sera créée par défaut et les modifications apportées à la copie n'affecteront pas la carte d'origine. Si vous devez modifier la carte originale, vous pouvez la passer via un pointeur. Les cartes vides doivent être manipulées avec précaution, car ce sont techniquement des pointeurs nuls, et passer une carte vide à une fonction qui attend une carte non vide provoquera une erreur.

A quoi sert net4.0 A quoi sert net4.0 May 10, 2024 am 01:09 AM

.NET 4.0 est utilisé pour créer une variété d'applications et offre aux développeurs d'applications des fonctionnalités riches, notamment : programmation orientée objet, flexibilité, architecture puissante, intégration du cloud computing, optimisation des performances, bibliothèques étendues, sécurité, évolutivité, accès aux données et mobile. soutien au développement.

Comment configurer l'expansion automatique de MongoDB sur Debian Comment configurer l'expansion automatique de MongoDB sur Debian Apr 02, 2025 am 07:36 AM

Cet article présente comment configurer MongoDB sur Debian System pour réaliser une expansion automatique. Les étapes principales incluent la configuration de l'ensemble de répliques MongoDB et de la surveillance de l'espace disque. 1. Installation de MongoDB Tout d'abord, assurez-vous que MongoDB est installé sur le système Debian. Installez à l'aide de la commande suivante: SudoaptupDaSudoaptInstall-myongoDB-Org 2. Configuration de la réplique MongoDB Ensemble de répliques MongoDB assure la haute disponibilité et la redondance des données, ce qui est la base de la réalisation d'une expansion de capacité automatique. Démarrer le service MongoDB: Sudosystemctlstartmongodsudosys

Comment assurer la haute disponibilité de MongoDB sur Debian Comment assurer la haute disponibilité de MongoDB sur Debian Apr 02, 2025 am 07:21 AM

Cet article décrit comment construire une base de données MongoDB hautement disponible sur un système Debian. Nous explorerons plusieurs façons de garantir que la sécurité des données et les services continueront de fonctionner. Stratégie clé: réplicaset: réplicaset: Utilisez des répliques pour obtenir la redondance des données et le basculement automatique. Lorsqu'un nœud maître échoue, l'ensemble de répliques élise automatiquement un nouveau nœud maître pour assurer la disponibilité continue du service. Sauvegarde et récupération des données: utilisez régulièrement la commande Mongodump pour sauvegarder la base de données et formuler des stratégies de récupération efficaces pour faire face au risque de perte de données. Surveillance et alarmes: déploier les outils de surveillance (tels que Prometheus, Grafana) pour surveiller l'état de course de MongoDB en temps réel, et

Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Apr 08, 2025 pm 09:39 PM

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

Création et gestion de goroutine dans les fonctions Golang Création et gestion de goroutine dans les fonctions Golang Jun 05, 2024 pm 07:06 PM

Dans le langage Go, la création d'une goroutine utilise le mot-clé go ainsi que les appels de fonction. Lors de la gestion de goroutine, utilisez sync.WaitGroup pour la synchronisation ; utilisez le package de contexte pour annuler goroutine. En combat réel, il peut être utilisé pour traiter en parallèle les requêtes réseau, le traitement d’images et d’autres tâches.

Révéler les secrets du débogage et de l'analyse des fonctions Golang Révéler les secrets du débogage et de l'analyse des fonctions Golang May 06, 2024 pm 06:21 PM

Le secret du débogage et de l'analyse de la fonction Go : vous pouvez utiliser Delve pour le débogage. Les commandes de débogage courantes incluent next, step, continue et print ; la bibliothèque standard Go fournit des outils d'analyse de pile et d'analyse de mémoire via le package pprof et son utilisation. la commande gotoolpprof pour visualiser les résultats de l'analyse ; le débogage des fonctions défectueuses nécessite de parcourir l'exécution et de vérifier les valeurs des variables ; l'analyse des goulots d'étranglement des performances nécessite la génération de fichiers d'analyse de pile et l'optimisation des fonctions chronophages nécessite la génération de fichiers d'analyse de mémoire et la recherche de références circulaires ; ou des pointeurs inédits.

See all articles