Ben*_*ied 5 mongodb mongodb-java
我在mongdb中调用存储函数时遇到了一些困难.我和mongo有点新手.
[编辑]:我的函数存储在mongodb中
function() {
var cndTime = new Date().getTime() - (3600*1000*24*2); // condition
db.urls.find(needParse: false).forEach(function(item){
if(item.date < cndTime) // check
db.urls.update({_id: item._id}, {$set: { needParse: true }}); // update field
});
}
Run Code Online (Sandbox Code Playgroud)
我要问的是如何使用reactivemongo或本机API调用此函数.
Nan*_*mar 16
考虑mongo shell中的以下示例,该示例首先保存名为echoFunction该system.js集合的函数并使用db.eval()以下函数调用该函数:
db.system.js.save({
_id: "echoFunction",
value: function (x) {
return 'echo: ' + x;
}
})
db.eval("echoFunction('test')") // -> "echo: test"
Run Code Online (Sandbox Code Playgroud)
echoFunction(...)有eval/ $where/ mapReduce等.更多信息请访问http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-server
byt*_*0de 10
在mongo shell中,您可以使用db.loadServerScripts()来加载当前数据库的system.js集合中保存的所有脚本.加载后,您可以直接在shell中调用函数,如下例所示
db.loadServerScripts();
mySampleFunction(3, 5);
Run Code Online (Sandbox Code Playgroud)
有一个特殊的系统集合命名
system.js
可以存储JavaScript函数以供重用.
要存储功能,您可以使用
db.collection.save()
,如以下示例所示:
db.system.js.save(
{
_id: "echoFunction",
value : function(x) { return x; }
}
);
db.system.js.save(
{
_id : "myAddFunction" ,
value : function (x, y){ return x + y; }
}
);
Run Code Online (Sandbox Code Playgroud)
该_id字段保存功能的名称,每个数据库都有唯一的.
该值字段保存函数定义.
在mongo shell中,你可以使用
db.loadServerScripts()
加载system.js当前数据库集合中保存的所有脚本.加载后,您可以直接在shell中调用函数,如下例所示:
db.loadServerScripts();
echoFunction(3);
myAddFunction(3, 5);
Run Code Online (Sandbox Code Playgroud)
资料来源:MONGODB MANUAL
你可以这样调用你的函数
db.loadServerScripts();
db.data.insert({
_id: myFunction(5),
name: "TestStudent"
});
Run Code Online (Sandbox Code Playgroud)
如果我的函数使用命令存储在数据库中:
db.system.js.save(
{
_id : "myFunction" ,
value : function (x){ return x + 1; }
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42923 次 |
| 最近记录: |