Latest web development tutorials

polymérisation MongoDB

MongoDB polymérisé (total), principalement pour le traitement des données (telles que des moyennes statistiques, des sommes, etc.), et renvoie le résultat des données calculées. Assez semblable compte de l'instruction sql (*).


méthode globale ()

procédé de polymérisation MongoDB utilise des agrégats ().

grammaire

La méthode globale de syntaxe de base () est la suivante:

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

Exemples

La collecte des données est la suivante:

{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId(7df78ad8902d)
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
},

Maintenant, nous avons mis l'est ci-dessus calculé pour chacun du nombre d'articles écrits par des auteurs utilisant global () calculé comme suit:

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
   "result" : [
      {
         "_id" : "w3cschool.cc",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1
}
>

Des exemples similaires ci - dessus instruction SQL: select by_user, COUNT (*) du groupe mycol par by_user

Dans l'exemple ci-dessus, nous by_user champ par champ pour regrouper les données et calcule la somme de la même valeur by_user domaine.

Le tableau suivant présente une expression d'agrégation:

expression description Exemples
$ Somme Calculer la somme. db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", num_tutorial: {$ somme: "$ aime"}}}])
$ Prix moyen Calcul de la moyenne db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", num_tutorial: {$ avg: "$ aime"}}}])
$ Min Obtient une collection de tous les documents correspondent une valeur minimum. db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", num_tutorial: {min $: "$ aime"}}}])
$ Max Obtient une collection de tous les documents correspondant à la valeur maximale. db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", num_tutorial: {$ max: "$ aime"}}}])
$ Poussez Dans le document résultant d'insérer une valeur dans un tableau. db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", url: {$ bouton: "$ url"}}}])
$ AddToSet Dans le document résultant d'insérer une valeur dans un tableau, mais ne crée pas une copie. db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", url: {$ addToSet: "$ url"}}}])
$ Première Être les premières données de documents selon les documents de ressources de tri. db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", first_url: {$ premier: "$ url"}}}])
$ Dernière Obtient les dernières données de documents selon les documents de ressources de tri db.mycol.aggregate ([{$ groupe: {_id: "$ by_user", last_url: {$ dernière: "$ url"}}}])

Le concept de pipeline

Pipes dans Unix et Linux en général est utilisé pour la sortie de la commande en cours en tant que paramètre à la commande suivante.

tuyau document polymère MongoDB MongoDB dans le tuyau après un résultat traité pour le prochain traitement pipeline. fonctionnement de l'oléoduc peut être répété.

Expression: traitement d'entrée et de sortie des documents. Les expressions sont apatrides, ne peuvent être utilisés pour calculer le pipeline actuel de documents globaux, vous ne pouvez pas traiter avec d'autres documents.

Ici, nous introduisons le cadre d'agrégation couramment utilisé dans plusieurs opérations:

  • $ Projet: Modifier la structure du document d'entrée. Peut être utilisé pour renommer, ajouter ou supprimer des champs, il peut également être utilisé pour créer des calculs et la documentation imbriquées.
  • $ Match: utilisé pour filtrer les données, seule la sortie des documents qualifiés. $ Match en utilisant MongoDB opérateurs de requête standard.
  • $ Limit: pour limiter le nombre de documents pipeline de polymérisation MongoDB retourné.
  • $ Sauter: Sauter le nombre spécifié de documents dans le pipeline de polymérisation, et renvoie le reste du document.
  • $ Unwind: un document est divisé en un ensemble de champ de type dans multiple, chaque tableau contenant une valeur.
  • $ Groupe: la collecte des documents de regroupement peut être utilisé pour les résultats statistiques.
  • $ Trier: la sortie du document d'entrée après la commande.
  • $ GeoNear: Ordonné production de documents à proximité d'un lieu géographique.

Des exemples de l'opérateur de pipeline

1, $ exemples de projets

db.article.aggregate(
    { $project : {
        title : 1 ,
        author : 1 ,
    }}
 );

Dans ce cas, les résultats ne ferait que là _id, tilte et auteur de trois champs, champ _id par défaut est d'être inclus, si la commande ne contient pas _id si elle peut être:

db.article.aggregate(
    { $project : {
        _id : 0 ,
        title : 1 ,
        author : 1
    }});

2. $ exemples de match

db.articles.aggregate( [
                        { $match : { score : { $gt : 70, $lte : 90 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
                       ] );

$ Match est utilisé pour obtenir un score supérieur à 70 est inférieur ou égal à 90 dossiers, alors les enregistrements correspondants à la prochaine étape du groupe $ opérateur de pipeline pour le traitement.

3. $ sauter instance

db.article.aggregate(
    { $skip : 5 });

Après un opérateur de pipeline de traitement $ de saut, les cinq premiers documents sont "filtrés" out.