0

私は、mongoDBがmongoのサーバー側のjavascript機能を使用することでイベントトリガーシステムとしても使用できると感じています。

例えば

    db.system.js.save(
    {
        _id : "timer",
        value : function timer(interval,times,fun){ var s=new Date(); var e=new Date(); var cnt=0; while(cnt<times){ print("audit: "+cnt); eval(fun()); cnt++; s=new Date(); while(e-s < interval){e=new Date();}}};
    }
db.testcol.save({a:timer(1000,3,function(){print(Date() + "Message");})})

出力=========

監査:0
2013年3月3日日曜日16:29:46GMT+ 0530(IST)メッセージ
監査:1
2013年3月3日日曜日16:29:47GMT+ 0530(IST)メッセージ
監査:2
2013年3月3日日曜日16:29:48GMT+ 0530(IST)メッセージ

これのすべての可能性を調査したわけではありませんが、この考えだけで次のことがもたらされます。1)特定のコレクションが遅延コマンドキューとして機能するトリガーイベントシステム。2)遅延/時限持続性

これのこれ以上の使用?

4

1 に答える 1

1

いいえ、MongoDBにはトリガーがありません:https ://jira.mongodb.org/browse/SERVER-124

何かをトリガーする方法は、それを行うための健全な方法ではなく、コレクション自体に何が出力されるか、おそらく関数のオブジェクトまたはnull値でさえわかりません。

また、これはコンソールでのみ機能し、クライアント側のプログラムでは使用しない限り機能しないと思いますeval(おそらく、そのときは確かではありません)。まあ、それがなぜ悪いのかを説明する必要すらありません。

これを実現するために、代わりにアクティブレコード(または同様のもの)を使用することができます。

于 2013-03-03T11:26:09.023 に答える