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()

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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.

.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.

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

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

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).

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.

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.
