MongoDB polimerizzazione
MongoDB polimerizzato (aggregato) principalmente per l'elaborazione dei dati (come medie statistiche, somme, ecc), e restituisce il risultato dei dati calcolati. In qualche modo simile conteggio istruzione SQL (*).
il metodo di aggregazione ()
Metodo di polimerizzazione MongoDB usa aggregata ().
grammatica
La sintassi del metodo aggregato di base () è il seguente:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
Esempi
La raccolta dei dati è il seguente:
{ _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 },
Ora abbiamo impostato il sopra è calcolato per ciascuna delle numero di articoli scritti da autori che utilizzano aggregati () calcolato come segue:
> 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 } >
Esempi simili di cui sopra istruzione SQL: select by_user, COUNT (*) dal gruppo mycol da by_user
Nell'esempio precedente, abbiamo by_user campo per campo raggruppare i dati e calcola la somma dello stesso valore by_user campo.
La tabella seguente mostra qualche espressione di aggregazione:
espressione | descrizione | Esempi |
---|---|---|
$ Sum | Calcolare la somma. | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", num_tutorial: {$ Somma: "$ piace"}}}]) |
$ Avg | Il calcolo della media | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", num_tutorial: {$ avg: "$ piace"}}}]) |
$ Min | Ottiene una raccolta di tutti i documenti corrispondono minimo valore. | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", num_tutorial: {$ min: "$ piace"}}}]) |
$ Max | Ottiene una raccolta di tutti i documenti relativi alla pena massima. | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", num_tutorial: {$ max: "$ piace"}}}]) |
$ push | Nel documento risultante per inserire un valore in una matrice. | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", URL: {$ spinta: "$ url"}}}]) |
$ AddToSet | Nel documento risultante per inserire un valore in un array, ma non crea una copia. | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", URL: {$ addToSet: "$ url"}}}]) |
$ Prima | Essendo i dati primo documento in base ai documenti di risorse sorta. | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", first_url: {$ prima: "$ url"}}}]) |
$ Ultimo | Ottiene i dati ultimo documento in base ai documenti di risorse sorta | db.mycol.aggregate ([{$ gruppo: {_id: "$ by_user", last_url: {$ ultima: "$ url"}}}]) |
Il concetto di conduttura
Tubi in Unix e Linux in generale è utilizzata per inviare il comando corrente come parametro per il comando successivo.
MongoDB MongoDB pipe documento polimerico nel tubo dopo un risultato elaborato al successivo trattamento pipeline. operazione Pipeline può essere ripetuta.
Espressione: ingresso di elaborazione e di uscita documenti. Le espressioni sono apolidi, possono essere utilizzati solo per calcolare la pipeline corrente dei documenti aggregati, non si può fare con altri documenti.
Qui vi presentiamo il quadro di aggregazione comunemente usato in diverse operazioni:
- $ Progetto: Modificare la struttura del documento di input. Può essere usato per rinominare, aggiungere o rimuovere campi, può anche essere usato per creare calcoli nidificati e documentazione.
- $ Partita: utilizzato per filtrare i dati, solo l'uscita di documenti qualificati. $ Corrispondenza con operatori di query standard di MongoDB.
- $ Limit: per limitare il numero di documenti MongoDB polimerizzazione gasdotto restituito.
- $ Skip: Salta il numero specificato di documenti in cantiere polimerizzazione, e restituisce il resto del documento.
- $ Rilassatevi: un documento è suddiviso in una matrice di tipo di campo in più, ogni matrice che contiene un valore.
- $ Gruppo: la raccolta di documenti di raggruppamento può essere utilizzato per risultati statistici.
- $ Sort: l'uscita documento di input dopo l'ordinazione.
- $ GeoNear: ordinato produzione dei documenti nei pressi di una posizione geografica.
Esempi di operatore pipeline
1, $ esempi di progetti
db.article.aggregate( { $project : { title : 1 , author : 1 , }} );
In questo caso i risultati sarebbero solo lì _id, tilte e autore di tre campi, campo di default _id è da inserire, se l'ordine non contiene _ID se può essere:
db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }});
2. $ partita esempi
db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] );
$ Match viene utilizzato per ottenere un punteggio superiore a 70 è inferiore o uguale a 90 record, quindi i record corrispondenti alla fase successiva del $ gruppo operatore pipeline per l'elaborazione.
3. $ saltare esempio
db.article.aggregate( { $skip : 5 });
Dopo un salto $ operatore pipeline processing, i primi cinque documenti sono "filtrati" fuori.