Latest web development tutorials

MongoDB polimerização

MongoDB polimerizado (agregado), principalmente para o processamento dos dados (como médias estatísticas, somas, etc.), e retorna o resultado dos dados calculados. contagem de instrução SQL um pouco semelhante (*).


) Método (agregado

método de polimerização MongoDB usa agregado ().

gramática

O método básico agregado sintaxe () é como se segue:

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

Exemplos

A coleta de dados é a seguinte:

{
   _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
},

Agora vamos definir o acima é calculado para cada um o número de artigos escritos por autores usando agregada () calculado da seguinte forma:

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

Exemplos semelhantes acima instrução SQL: select by_user, COUNT (*) do grupo mycol por by_user

No exemplo acima, nós by_user campo a campo para agrupar os dados e calcula a soma do mesmo valor by_user campo.

A tabela a seguir mostra alguns expressão de agregação:

expressão descrição Exemplos
$ Sum Calcular a soma. db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ soma: "$ gosta"}}}])
$ Média Calculando a média db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ avg: "$ gosta"}}}])
$ Min Obtém uma coleção de todos os documentos correspondem a pena mínima. db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ min: "$ gosta"}}}])
$ Max Obtém uma coleção de todos os documentos correspondentes à pena máxima. db.mycol.aggregate ([{$ group: {_id: "$ by_user", num_tutorial: {$ max: "$ gosta"}}}])
$ Empurrar No documento resultante para inserir um valor em uma matriz. db.mycol.aggregate ([{$ group: {_id: "$ by_user", url: {$ push: "$ url"}}}])
$ AddToSet No documento resultante para inserir um valor em uma matriz, mas não cria uma cópia. db.mycol.aggregate ([{$ group: {_id: "$ by_user", url: {$ addToSet: "$ url"}}}])
$ Primeira Sendo os primeiros dados do documento de acordo com os documentos de recursos de classificação. db.mycol.aggregate ([{$ group: {_id: "$ by_user", first_url: {$ primeira: "$ url"}}}])
$ Última Obtém os últimos dados do documento de acordo com os documentos de recursos tipo db.mycol.aggregate ([{$ group: {_id: "$ by_user", last_url: {$ passado: "$ url"}}}])

O conceito de gasoduto

Tubos em Unix e Linux em geral é usado para a saída do comando atual como um parâmetro para o próximo comando.

MongoDB MongoDB tubulação documento polimérico no tubo após o resultado processado para o processamento sequencial seguinte. operação de Pipeline pode ser repetido.

Expressão: entrada processamento e saída de documentos. Expressões são apátridas, só pode ser usado para calcular o pipeline atual de documentos agregados, você não pode lidar com outros documentos.

Aqui nós introduzimos a estrutura de agregação comumente usado em várias operações:

  • $ Projeto: Modificar a estrutura do documento de entrada. Pode ser usada para renomear, adicionar ou remover campos, ele também pode ser usado para criar cálculos aninhados e documentação.
  • $ Jogo: usado para filtrar dados, apenas a saída de documentos qualificados. $ Jogo usando operadores de consulta padrão MongoDB.
  • $ Limite: para limitar o número de documentos gasoduto polimerização MongoDB devolvido.
  • $ Ignorar: Ignorar o número especificado de documentos no pipeline de polimerização, e retorna o resto do documento.
  • $ Unwind: um documento é dividido em uma matriz de tipo de campo em vários, cada um array contendo um valor.
  • $ Grupo: o conjunto de documentos de agrupamento pode ser utilizado para os resultados estatísticos.
  • $ Ordenar: a saída de documento de entrada após a encomenda.
  • $ GeoNear: Ordenada saída de documentos perto de uma localização geográfica.

Exemplos do operador de pipeline

1, exemplos de projetos $

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

Neste caso, os resultados só haveria _id, tilte e autor de três campos, campo _id padrão é para ser incluído, se a ordem não contém _id se ele pode ser:

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

2. Exemplos de correspondência $

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

$ Combinar é usado para obter uma pontuação maior do que 70 é menos do que ou igual a 90 registos, em seguida, os registos correspondentes à fase seguinte do operador de pipeline $ grupo para processamento.

3. $ pular instância

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

Depois de um operador de processamento de gasoduto $ salto, os primeiros cinco documentos são "filtradas" para fora.