调用mongodb中的存储函数
我在mongdb中调用存储函数时遇到了一些困难。 我对mongo有点生疏 [编辑]:我的函数存储在mongodb中调用mongodb中的存储函数,mongodb,mongodb-java,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
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
});
}
function(){
var cndTime=new Date().getTime()-(3600*1000*24*2);//条件
find(needParse:false).forEach(函数(项){
if(item.date
我要问的是如何使用reactivemongo或本机API调用此函数。考虑mongo shell中的以下示例,该示例首先将名为
echoFunction
的函数保存到system.js
集合,并使用db.eval()
调用该函数:
db.system.js.save({
_id:“回声功能”,
值:函数(x){
返回“echo:”+x;
}
})
db.eval(“echoFunction('test')”)/->“echo:test”
echoFunction(…)
在eval
/$where
/mapReduce
等中提供。更多信息可在mongo shell的中找到,您可以使用db.loadServerScripts()为当前数据库加载保存在system.js集合中的所有脚本。加载后,您可以直接在shell中调用函数,如下例所示
db.loadServerScripts();
mySampleFunction(3, 5);
有一个名为的特殊系统集合 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; }
}
);
\u id字段包含函数的名称,每个数据库都是唯一的
值字段保存函数定义
在mongoshell中,您可以使用
db.loadServerScripts()
为当前数据库加载保存在system.js
集合中的所有脚本。加载后,您可以直接在shell中调用函数,如下例所示:
db.loadServerScripts();
echoFunction(3);
myAddFunction(3, 5);
来源:您可以这样调用您的函数
db.loadServerScripts();
db.data.insert({
_id: myFunction(5),
name: "TestStudent"
});
如果我的函数使用命令存储在数据库中:
db.system.js.save(
{
_id : "myFunction" ,
value : function (x){ return x + 1; }
});
我想你需要用$where让它工作! 大概是这样的:
db.urls.find( { needParse: false, $where: function(item){
if(item.date < cndTime) // check
db.urls.update({_id: item._id}, {$set: { needParse: true }});
db.url.find({needParse:false,$where:function(item){
if(item.date
有关更多信息,请阅读以下内容:
你能解释一下你想完成什么吗?奇怪的是,每个人都在控制台中回答这个问题,但这个问题被标记为java`:`不要在服务器上使用javascript函数来实现这种功能,因为它们可以1.只在主服务器上运行,2.在整个执行过程中需要对数据库进行写锁定,导致吞吐量下降我不认为op有用,因为它在Java中不起作用,甚至在JavaScript中也不起作用,只是在shelldb.eval中不推荐在输出上编写