Há uma coleção de sistema especial denominada 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
_idmantém o nome da função e é exclusivo por banco de dados.O campo
valuemanté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
echoarmazenada emsystem.js:echo("test") test O exemplo de código a seguir executa a função
isEvenarmazenada emsystem.jsno operador$wherena 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 }