sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでサーバー側の保存された関数を使用することが推奨されないのはなぜですか?

    グーグルの検索結果はそれを行う方法を教えてくれる人だけで埋め尽くされているにもかかわらず、私はリストを数回述べたと確信しています:

    • evalです
    • eval 簡単に注入できる自然な能力があり、SQLと同等の非PDOのようなものです。フルスケールのエスケープライブラリを構築しないと、混乱してしまいます。これらの関数を使用することで、MongoDBのより安全な母国語を、他の古いSQLと同じくらい安全でないものに効果的に置き換えることができます。
    • グローバルロックを取得し、書き込みロックを取得でき、特定の場合に解放される他の操作とは異なり、操作が完全に完了するまで解放されません。
    • eval プライマリでのみ機能し、レプリカセットの他のメンバーでは機能しません
    • 基本的に、バンドルされたV8 / spidermonkey envoで1トンのJSを実行しており、データベースと管理コマンドの任意の部分に完全にアクセスできるMongoDBが付属していますが、安全に聞こえますか?
    • これはMongoDBでも「MongoDBsSQL」でもありません。MongoDBsC++コード自体ではなく、組み込みのJS環境内で実行されます(集約フレームワークとは異なります)。
    • 前のポイントのため、他の多くのオプションと比較して非常に遅いです。これは$whereに当てはまります。 使用法も。

    この面で始めるには、これで十分です。




    1. MongoDBコレクションからすべてのアイテムを削除する方法

    2. 配列フィールドに特定の配列の少なくともn個の要素が含まれているドキュメントを検索します

    3. MongoDBとMongooseの違い

    4. MongoDBクエリ結果をCSVファイルにエクスポートする方法