Armazenar uma função JavaScript no servidor
Nesta página
Importante
A partir do MongoDB 8.0, o JavaScript do lado do servidor está obsoleto. A funcionalidade system.js
pode não funcionar com todos os recursos.
Há uma collection de sistema especial chamada system.js
que pode armazenar funções JavaScript para reutilização.
Antes de começar
Essa tarefa usa o shell mongo
legado para carregar funções do lado do servidor a partir da coleção system.js
. Essa versão do shell não tem mais suporte. Para uma solução alternativa no MongoDB Shell, consulte Gravar scripts.
Sobre esta tarefa
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.
Passos
Para armazenar uma função, insira a função na coleção system.js
, como nestes exemplos:
Armazenar funções JavaScript no banco de dados
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 a seguir cria uma função echo
na coleção system.js
:
db.system.js.insertOne( { _id: "echo", value : function(x) { return x; } } )
O exemplo a seguir 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 tipo BSON preterido JavaScript (com escopo) não podem ser usadas por mapReduce
e $where
.
Execute as funções JavaScript armazenadas
O exemplo de código a seguir executa a função
echo
armazenada emsystem.js
:echo("test") test O exemplo de código a seguir executa a função
isEven
armazenada emsystem.js
no operador$where
na coleçãotest_numbers
:db.test_numbers.find({ $where: function () { return isEven(this.value); } }) { "_id" : ObjectId("668d7be41b55bec1bf191499"), "value" : 2 } { "_id" : ObjectId("668d7be41b55bec1bf19149b"), "value" : 4 } { "_id" : ObjectId("668d7be41b55bec1bf19149d"), "value" : 6 }