Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用mongodb中的存储函数_Mongodb_Mongodb Java - Fatal编程技术网

调用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

我在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
     });
}
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中不推荐在输出上编写