6

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
     });
}

私が求めているのは、reactivemongo またはネイティブ API を使用してこの関数を呼び出す方法だけです。

4

5 に答える 5

16

echoFunctionという名前の関数を最初にsystem.jsコレクションに保存し、 を使用して関数を呼び出す mongo シェルの次の例を考えてみましょうdb.eval()

db.system.js.save({
    _id: "echoFunction",
    value: function (x) {
        return 'echo: ' + x;
    }
})

db.eval("echoFunction('test')") // -> "echo: test"

echoFunction(...)eval/ $where/などで入手mapReduceできます。詳細については、http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-serverで入手できます。

于 2013-08-12T11:08:37.353 に答える
3

このように関数を呼び出すことができます

db.loadServerScripts();
db.data.insert({
   _id: myFunction(5),
    name: "TestStudent"
});

私の関数がコマンドを使用してdbに格納されている場合:

db.system.js.save(
 {
  _id : "myFunction" ,
  value : function (x){ return x + 1; }
  });
于 2017-06-20T06:13:22.927 に答える