我想知道是否有办法可以保存mongodb上使用的JavaScript函数。这样,您可以在需要时重用这些功能。
答案 0 :(得分:0)
是的,现在有一种方法可以在服务器上存储JavaScript函数以供重用。您只需将它们存储在每个数据库调用system.js
的特殊集合中。这样做看起来像这样:
db.system.js.save({ _id:" myAddFunction" , value:function(x,y){return x + y; }});
确保首先在mongo shell中选择要使用use <database>
命令保存函数的数据库。
这是我添加到system.js的函数,它检查集合属性是否唯一:
db.system.js.save({
_id : "allDifferent" ,
value : function (collection,field) {
var m = function() { emit(this.field, 1); }
var r = function(key, emits) {
var n = 0; emits.forEach(function(v) { n += v; }); return n;
}
var result = db.collection.mapReduce(m, r, { out: "namecounts" });
var allDifferent= (db.namecounts.count( { value: { $gt: 1 } } ) == 0)
db.namecounts.drop();
return allDifferent;
}
});
在mongo shell中,您应该使用db.loadServerScripts()
加载当前数据库的system.js
集合中保存的所有脚本。
加载后,您可以直接在shell中调用函数,如下例所示:
allDifferent(sample_collection,name)
您还可以列出使用
保存的功能db.system.js.distinct(&#34; _id&#34);