Menu Docs
Página inicial do Docs
/
Manual do MongoDB

Armazenar uma função JavaScript no servidor

Nesta página

  • Antes de começar
  • Sobre esta tarefa
  • Passos

Há uma coleção de sistema especial denominada system.js que pode armazenar funções JavaScript para reutilização.

Esta tarefa utiliza o shell legado mongo para carregar funções do lado do servidor da coleção system.js . Esta versão do shell não é mais suportada. Para obter uma solução alternativa no MongoDB Shell, consulte Scripts de gravação.

Considere as seguintes recomendações ao usar system.js:

  • Não armazene lógica de aplicativo no banco de dados.

  • Existem limitações de desempenho para executar JavaScript dentro do MongoDB.

  • O código do aplicativo é mais eficaz quando compartilha o controle de versão com o aplicativo.

Para armazenar uma função, insira a função na coleção system.js , como nestes exemplos:

1
db.test_numbers.insertMany([
{ value: 1 },
{ value: 2 },
{ value: 3 },
{ value: 4 },
{ value: 5 },
{ value: 6 }
])
2

Para armazenar funções JavaScript no banco de dados, insira um documento com estes campos:

  • O campo _id mantém o nome da função e é exclusivo por banco de dados.

  • O campo value mantém a definição de função.

O exemplo seguinte cria uma função echo na coleção system.js :

db.system.js.insertOne(
{
_id: "echo",
value : function(x) { return x; }
}
)

O exemplo seguinte cria uma função isEven na coleção system.js :

db.system.js.insertOne(
{
_id: "isEven",
value: function (num) {
return num % 2 === 0;
}
}
)

Estas funções, salvas como Tipo JSON, estão disponíveis para utilizar a partir de qualquer contexto JavaScript, como mapReduce e $where.

Observação

As funções salvas como o JavaScript do tipo BSON obsoleto (com escopo) não podem ser usadas por mapReduce e $where.

3
db.loadServerScripts()
4
  1. O seguinte exemplo de código executa a função echo armazenada no system.js:

    echo("test")
  2. O seguinte exemplo de código executa a função isEven armazenada em system.js no operador $where na coleção test_numbers :

    db.test_numbers.find({
    $where: function () {
    return isEven(this.value);
    }
    })

Próximo

O que é o MongoDB?