ColdFusion と MongoDB

概要

MongoDBは、クロスプラットフォームでドキュメントベースの NoSQL データベースです。JSON/BSON のようなドキュメントとスキーマを使用します。

  • MongoDB は、データを柔軟な JSON のようなドキュメントに保存します。つまり、フィールドはドキュメントによって変化する可能性があり、データ構造は時間の経過と共に変化する可能性があります。
  • ドキュメントモデルは、アプリケーションコードのオブジェクトにマッピングされていて、データを扱いやすくなっている。
  • アドホッククエリ、インデックス作成およびリアルタイム集計により、データへのアクセスおよび分析に強力な方法を提供します。
  • MongoDB の中心は分散データベースなので、高可用性、水平方向のスケーリング、地理的分布が備わっており、使いやすくなっています。

MongoDB の機能

次に、MongoDB の機能の一部を示します。

  • クエリ:MongoDB は、アドホッククエリおよびドキュメントベースのクエリをサポートします。また、フィールド、範囲クエリ、正規表現による検索もサポートします。
  • インデックス作成:ドキュメントの任意のフィールドにインデックスを設定できます。
  • レプリケーション:MongoDB は、主従のレプリケーションをサポートします。MongoDB は、ネイティブアプリケーションを使用してデータの複数のコピーを維持します。
  • 複数のサーバー:データベースは、複数のサーバーで実行できます。ハードウェアエラーに対するシステムの堅牢性を高めるために、データは複製されます。
  • 自動シャーディング:この処理は、複数の物理パーティション(シャードと呼ばれる)にデータを分散させます。シャーディングにより、MongoDB には自動ロードバランシング機能が備わっています。
  • MapReduce:MapReduce および柔軟な集計ツールをサポートします。

MongoDB の機能について詳しくは、MongoDB 公式 Web サイトを参照してください。

MongoDB のインストール

お使いの OS に MongoDB をインストールするには、MongoDB ダウンロードセンターを参照してください。

MongoDB と RDBMS の比較

RDBMS

MongoDB

データベース

データベース

テーブル

コレクション

タプル/行

ドキュメント

フィールド

テーブル結合

埋め込まれたドキュメント

プライマリキー

プライマリキー(MongoDB 自体が提供するデフォルトキー _id)

MongoDB では、ObjectIds またはプライマリキーは、12 バイトの長さ、2 ~ 4 バイトのいくつかのチェーンで構成されます。次の値が、合計 12 バイトの組み合わせを構成します。

  • Unix エポックからの秒数を表す 4 バイトの値
  • 3 バイトのマシン識別子
  • 2 バイトのプロセス ID
  • 3 バイトのカウンター(ランダムな値から開始)

cfmongodb パッケージのインストール

Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、MongoDB 用のモジュールはインストールされていません。最初の手順は、ColdFusion の MongoDB パッケージをインストールすることです。

MongoDB のパッケージは、cfmongodb と呼ばれます。

パッケージ cfmongodb をインストールするには、次の手順に従います。

  1. <CF_HOME>/cfusion/bin に移動します。
  2. 次のコマンドを入力します。
    1. Windows:cfpm.bat
    2. Linux:cfpm.sh
  3. コマンド install cfmongodb を入力します。

MongoDB パッケージがインストールされるまで待ちます。

ColdFusion Administrator からのインストール

  1. ColdFusion Administrator/パッケージマネージャーで、「使用可能なパッケージ」セクションを展開します。
  2. パッケージのリストから、cfmongodb を選択します。
  3. インストール」をクリックします。

ColdFusion との統合

Application.cfcdatasources プロパティで、次に示すように、MongoDB ホスト(server/localhost)およびポートを指定して、MongoDB への接続を作成します。

component { this.name = "mongotest77123"; this.serialization.preservecaseforstructkey=true this.enableNullSupport=true this.datasources = { "local"= { type="mongodb" }, "mymongodb"= { type="mongodb", host="mongodb://127.0.0.1:27017/", "init"= true } } }

ColdFusion Administrator を使用した MongoDB データソースの作成

ColdFusion Administrator で、データとサービス/NoSQL データソースをクリックします。

NoSQL データソース接続およびデータソース名(DSN)を追加して管理します。

データソースの名前を入力して、「ドライバ」で MongoDB を選択します。

追加」をクリックします。

設定の詳細を追加します(ホスト、ポート、SSL を有効にするなど)。詳しくは、NoSQL 関連オプションの説明を参照してください。

Admin API を使用した MongoDB データソースの作成

CFC: CFIDE.adminapi.nosql_datasource

setMongoDataSource

MongoDB データソースを作成または変更します。

シンタックス

public void setMongoDataSource(required string name, required string type, required string host, string port="27017", string replicaSet, boolean ssl, boolean dnsSeedList, string authMechanism, string username, string password, string authSource, string gssapiServiceName, string readConcern, string readPreference, string w, string wtimeout, boolean j, string connectTimeout, string maxPoolSize, string minPoolSize, string maxConnectionLifeTime, string maxConnectionIdleTime, string maxWaitQueueTimeout, string maxWaitQueueSize, string heartbeatFrequency, string minHeartbeatFrequency

パラメーター

  • name:文字列、必須、名前 - ColdFusion データソース名。
  • type:文字列、必須、タイプ - データベースタイプ。
  • host:文字列、必須、ホスト - データベースサーバーホスト名または IP アドレス。
  • port:文字列、オプション、ポート - データベースサーバーにアクセスするために使用されるポート。(デフォルト 27017)
  • replicaSet:文字列、オプション、replicaSet - mongod がレプリカセットのメンバーである場合、レプリカセットの名前を指定します。
  • ssl:ブール値、オプション、ssl - 接続に対して TLS/SSL を有効または無効にするかどうか。
  • dnsSeedList:ブール値、オプション、dnsSeedList。
  • authMechanism:文字列、オプション、authMechanism。
  • username:文字列、オプション、ユーザー名。
  • password:文字列、オプション、パスワード。
  • authSource:文字列、オプション、authSource。
  • gssapiServiceName:文字列、オプション - authMechanism が gssapi の場合に GSSAPI サービス名を指定します。
  • readConcern:文字列、オプション、readConcern - 「問題を読み取り」を使用すると、クライアントは、レプリカセットからの読み取りに対する分離のレベルを選択できます。
  • readPreference:文字列、オプション、readPreference - レプリカセットに関する読み取り操作の動作を説明する環境設定を読み取ります。
  • w:文字列、オプション、w - w オプションは、書き込み操作が指定された数の mongod インスタンスまたは指定されたタグを含む mongod インスタンスに伝播していることの確認をリクエストします。
  • wtimeout:文字列、オプション、wtimeout - これは、書き込み問題の制限時間(ミリ秒)を指定します。
  • j:ブール値、オプション、j - ジャーナルオプションは、書き込み操作がジャーナルに書き込まれている MongoDB からの確認をリクエストします。
  • connectTimeout:文字列、オプション、connectTimeout - タイムアウトまでに接続を試行する時間(ミリ秒)。
  • maxPoolSize:文字列、オプション、maxPoolSize - 接続プール内の最大接続数。
  • minPoolSize:文字列、オプション、minPoolSize - 接続プール内の最小接続数。
  • maxConnectionLifeTime:文字列、オプション、maxConnectionLifeTime - 接続の最大有効期間。
  • maxConnectionIdleTime:文字列、オプション、maxConnectionIdleTime - プール内で接続が削除されて閉じられる前にアイドル状態を維持できる最大時間(ミリ秒)。
  • maxWaitQueueTimeoutt:文字列、オプション、maxWaitQueueTimeout。
  • maxWaitQueueSize:文字列、オプション、maxWaitQueueSize - 接続プール内の最大接続数。
  • heartbeatFrequency:文字列、オプション、heartbeatFrequency - ハートビート頻度は、ドライバーが MongoDB デプロイメントの状態をいつ確認するかを制御します。
  • minHeartbeatFrequency:文字列、オプション、minHeartbeatFrequency。

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // データソースコンポーネントのオブジェクトを作成する dsnObj = createObject("component","cfide.adminapi.nosql_datasource"); // mongodb データソースのパラメーター値を設定する mongoDSN.name = "mongo1" mongoDSN.type = "mongodb" mongoDSN.host = "127.0.0.1" mongoDSN.port = "27017" mongoDSN.caseSensitivity = "false" // MongoDB データソースを作成する mResponse=dsnObj.setMongoDataSource(mongoDSN.name,mongoDSN.type,mongoDSN.host, mongoDSN.port,mongoDSN.caseSensitivity) </cfscript>

getDataSources

すべてのデータソースまたは指定されたデータソースを格納した構造体を返します。

シンタックス

public any getDatasources(dsnName)

パラメーター

  • dsnName:任意、オプション、dsnName - 構造が返されるデータソースの名前。

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // データソースコンポーネントのオブジェクトを作成する dsnObj = createObject("component","cfide.adminapi.nosql_datasource"); res=dsnObj.getDatasources() writeDump(res) </cfscript>

deleteMongoDatasource

指定されたデータソースを削除します。

シンタックス

public void deleteMongoDatasource(required dsnName)

パラメーター

  •  dsnName:任意、必須、dsnName - 削除されるデータソースの名前。

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // データソースコンポーネントのオブジェクトを作成する dsnObj = createObject("component","cfide.adminapi.nosql_datasource"); // データソースを取得する res=dsnObj.getDatasources() writedump(res) // データソース ds1 を削除する dsnObj.deleteMongoDatasource(res.ds1.name) </cfscript>

verifyMongoDatasource

与えられたデータソース名を検証します。

シンタックス

public Any verifyMongoDatasource(required dsnName)

パラメーター

  • dsnName:任意、必須、dsnName - ColdFusion でデータソースへの接続に使用される名前。

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // データソースコンポーネントのオブジェクトを作成する dsnObj = createObject("component","cfide.adminapi.nosql_datasource"); // データソースを取得する res=dsnObj.getDatasources() writedump(res) // データソース ds1 を検証する verifyRes=dsnObj.verifyMongoDatasource(res.ds1.name) writeDump(verifyRes) </cfscript>

CFSetup を使用したデータソースの追加

add nosql name=testset mongoport=27017 mongoHost=see-wv-a403 driverName=MONGODB maxStalenessSeconds=2000 MAXWAITQUEUETIMEOUT=2000 MAXWAITQUEUESIZE=10 MAXPOOLSIZE=20 MAXCONNECTIONLIFETIME=2000 HEARTBEATFREQUENCY=10  MAXCONNECTIONIDLETIME=2000 MINHEARTBEATFREQUENCY=2 CONNECTTIMEOUT=2000 READPREFERENCE=PRIMARY SSL=YES  REPLICASET=replica READCONCERN=majority dnsSeedList=true <alias>

コレクション

コレクションは、リレーショナルデータベースのテーブルに相当します。コレクションは、構造に準拠していないドキュメントを保存します。これは、MongoDB がスキーマに制限されないデータベースであるためです。

コレクションの作成

コレクションを作成するには、MongoDB データベースオブジェクトを作成してから、データベース内にコレクションを作成する必要があります。1 つのデータベースが複数のコレクションで構成されることがあります。シンタックスについては、次のコードを参照してください。

<cfscript> // mymongodb は MongoDB への接続の名前(Application.cfc で定義) db = getMongoService("mymongodb").db("newdb") // db を作成する db.createCollection("Coll_1") // コレクションを作成する db.createCollection("Coll_2") // 別のコレクションを作成する </cfscript>

ドキュメントの作成

コレクションを作成したら、コレクションに 1 つまたは複数のドキュメントを挿入する必要があります。

1 つのドキュメントの挿入

次に、insert メソッドを使用して、コレクションに単一のドキュメントを挿入する方法を示します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.createCollection("newcolThree") // コレクションを作成する // 単一のドキュメントを挿入する db.newcolThree.insert({ "_id": 1, "name":"John Lennon", "band":"Beatles" }) </cfscript>

メモ:Objectid セットを明示的に設定していない場合は、ドキュメントを定義する際に、MongoDB がデフォルトでドキュメントに割り当てます。スニペットには、明示的に Objectid セットが含まれ、それが表示されます。

多数のドキュメントの挿入

insertMany メソッドを使用して、複数のドキュメントを構造体の配列としてコレクションに挿入できます。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.newcolThree.drop() // コレクションをドロップする db.createCollection("newcolThree") // コレクションを作成する // 単一のドキュメントを挿入する db.newcolThree.insert({ "_id": 1, "name":"John Lennon", "band":"Beatles" }) // 別のドキュメントを挿入する db.newcolThree.insertOne({ "_id": 2, "name":"Paul McCartney", "band":"Beatles" }) // 多数のドキュメントを挿入する db.newcolThree.insertMany([ { "_id": 3, "name":"George Harrison", "band":"Beatles" }, { "_id": 4, "name":"Ringo Starr", "band":"Beatles" } ]) </cfscript>

キャップされたコレクションの作成

キャップされたコレクションは、挿入順に従う固定サイズの循環コレクションです。作成、読み取り、削除操作での高パフォーマンスをサポートします。循環とは、コレクションに割り当てられた固定サイズを使い切ると、明示的なコマンドを指定することなく、コレクションで最も古いドキュメントから削除されることを意味します。

キャップされたコレクションでは、更新するとドキュメントサイズが増加する場合、ドキュメントに対する更新を制限します。キャップされたコレクションは、ドキュメントを保存するのが

ディスクストレージの順番なので、確実にドキュメントサイズがディスクに割り当てられたサイズを増加させないようにします。キャップされたコレクションは、ログ情報、キャッシュデータ、その他大量のデータの保存に最適です。

詳しくは、MongoDB のキャップされたコレクションを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する // capped フラグ(値は true)、コレクションのサイズ(size)、 // ドキュメントの最大数(max )を渡して、 // キャップされたコレクションを作成する db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000}) </cfscript>

cappedtrue に設定する場合、size フィールドで最大サイズも設定する必要があります。

コレクションがキャップされているかどうかを確認するには、isCapped メソッドを使用します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する ifCapped=db.cappedLogCollection.isCapped() writeOutput("Is collection capped: "& ifCapped) </cfscript>

既存のキャップされていないコレクションをキャップされたコレクションに変換するには、次のコードを使用します。convertToCapped メソッドを使用して、キャップされたコレクションに変換できます。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.convertToCapped.drop() // キャップされていないコレクションを作成する db.createCollection("convertToCapped") // コレクションを作成する // キャップされていない既存のコレクションをキャップされたコレクションに変換する db.convertToCapped({"convertToCapped":"posts",size:10000}) </cfscript>

コレクションのクエリ

find メソッドは、コレクションのドキュメントを選択したり、選択したドキュメントへのカーソルを返したりします。

find メソッドには、query structprojection の 2 つのパラメーターがあり、両方ともオプションです。詳しくは、find のドキュメントを参照してください。

次の例では、find メソッドはどのパラメーターも使用していません。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.createCollection("colFindDemo") // コレクションを作成する db.colFindDemo.insertMany([ { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals","born": 1945 }, { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }, { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }, { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }, { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }, { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }, { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }, { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } ]) // すべてのドキュメントを返す db.colFindDemo.find() </cfscript>

クエリ条件(例:where _id equals 4)に一致するドキュメントを見つけるには、次の例を参照してください。

<cfscript>

       db.colFindDemo.find({"_id":4})

</cfscript>

次に、instrument が drums に等しいという条件に一致する別の例を示します。

<cfscript>

       db.colFindDemo.find({"instrument":"Drums"})

</cfscript> 

クエリ演算子を使用した検索

次に、クエリ演算子を使用してコレクション内のドキュメントを見つける例を示します。

<cfscript>

       df.colFindDemo.find({"_id":{$gt:4}}) // _id が 4 より大きいドキュメントを見つける

</cfscript>

<cfscript>

       df.colFindDemo.find({"instrument":{$regex:"^B"}}) // instrument が B で始まるドキュメントを見つける

</cfscript>

<cfscript>

       db.colFindDemo.find({"name":{$in:["Ian Gillan","Ian Paice"]}}) // name が一致するドキュメントを見つける

</cfscript>

<cfscript>

       db.colFindDemo.find({"born":{$all:[1948]}}) // born が一致する(1948 年を含んでいる)ドキュメントを見つける

</cfscript>

コレクションの更新

次のメソッドを使用して、コレクションを更新できます。

  • update
  • updateOne
  • updateMany

update

update メソッドは、既存のドキュメントやコレクション内のドキュメントを変更します。詳しくは、update メソッドのドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdDemo.drop() db.createCollection("colUpdDemo") // コレクションを作成する db.colUpdDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47" }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74" }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53" } ]) // _id:1 のドキュメントの数量を 10 だけインクリメントする db.colUpdDemo.update({"_id":1},{$inc:{"quantity":10}}) // 単位原価 8.74 から 10.74 に更新する db.colUpdDemo.update({"_id":2},{$set:{"unit_cost": "$10.74"}}) </cfscript>

パイプラインを使用した更新

集計パイプラインは、ステージのパイプラインを介したデータ処理の考えに基づいてモデル化されたフレームワークです。ドキュメントは、マルチステージのパイプラインに入り、そこで、ドキュメントが集計結果に変換されます。

詳しくは、MongoDB の集計パイプラインを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); db.members.drop() res = db.members.insertMany([ { "_id" : 1, "member" : "abc123", "status" : "A", "points" : 2, "misc1" : "note to self: confirm status", "misc2" : "Need to activate" }, { "_id" : 2, "member" : "xyz123", "status" : "A", "points" : 60, "misc1" : "reminder: ping me at 100pts", "misc2" : "Some random comment" } ]) writedump(res) db.members.find().foreach((s) => { writedump(s) }) writeoutput("apply update pipeline") res = db.members.update( { }, [ { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } }, { $unset: [ "misc1", "misc2" ] } ], { multi: true } ) writedump(res) db.members.find().foreach((s) => { writedump(s) }) db.members.drop() </cfscript>

updateOne

このメソッドは、指定されたフィルターに基づいて、コレクション内の単一のドキュメントを更新します。詳しくは、updateOne メソッドのドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdDemo.drop() db.createCollection("colUpdDemo") // コレクションを作成する db.colUpdDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47", "stock":10000 }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74", "stock":15000 }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53", "stock":20000 } ]) db.colUpdDemo.updateOne({"supplier": "Keebler-Hilpert"},{$set:{"stock":16000}}) </cfscript>

try-catch の使用

try-catch ステートメントを使用すると、ある値が見つからないか正しくない場合に、特定の例外を処理できます。例えば、次のように入力します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdOneDemo.drop() db.createCollection("colUpdOneDemo") // コレクションを作成する db.colUpdOneDemo.insertMany([ { "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" }, { "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 }, { "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 } ]) try { db.restaurant.updateOne( { "name" : "Central Perk Cafe New" }, // 間違った値を指定する { $set: { "violations" : 3 } } ) } catch (any e) { WriteOutput("Error: " & e.message) } </cfscript>

updateMany

このメソッドは、指定されたフィルターに基づいて、コレクション内の複数のドキュメントを更新します。詳しくは、updateMany メソッドのドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdManyDemo.drop() db.createCollection("colUpdManyDemo") // コレクションを作成する db.colUpdManyDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47", "stock":10000 }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74", "stock":15000 }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53", "stock":20000 } ]) // 指定のフィルターに基づいて複数のドキュメントを更新する db.collection.updateMany( {"quantity" : {$gt: 250 }}, {$set: { "stock" : 50000 } } ); </cfscript>

高度なデータ型のサポート

Employee.cfc

component accessors="true" { property string empName; property numeric age; property string dept; }

CFC オブジェクトのシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students emp = new Employee({empName="James", age=26, dept="000"}); serializedStr = serializeJSON(emp); collection.insertMany([{ key: serializedStr, name: "John Doe" }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() fileDataFromMongo = structFind(result, "key"); fileInJSON = DeserializeJSON(fileDataFromMongo); </cfscript>

CFC JSON

test.cfc

{ name="John", age="26" }

cfcjson.cfm

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students fileToRead = "#ExpandPath('./test.cfc')#"; jsonContent = FileRead(fileToRead); serializedStr = serializeJSON(jsonContent); collection.insertMany([{ key: serializedStr, name: "John Doe" }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() fileDataFromMongo = structFind(result, "key"); fileInJSON = DeserializeJSON(fileDataFromMongo); </cfscript>

配列のシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students percentages = [22.5 , 33 , 45]; collection.insertMany([{ name: "John Doe", marks:{ total: 15, percentage : percentages } }]); // mongo から読み取る result = collection.find().first() writedump(result) </cfscript>

BigDecimal のシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students percent = 3333333444222244.457777778900673 collection.insertMany([{ name: "John Doe", marks:{ total: 15, percent = 3333333444222244.457777778900673 } }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() writedump(result) </cfscript>

PDF のシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students collection.insertMany([{ name: "John Doe", marks:{ key: test, name:"John Doe" } }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() writedump(result) fileDataFromMongo = structFind(result, "key"); myFile=GetDirectoryFromPath(GetCurrentTemplatePath()) & "test.pdf" FileWrite(file=myFile, data= fileDataFromMongo) </cfscript> <cfpdf action="extracttext" pages = "1" source="#myFile#" name="myXML" />

クエリのシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students myquery = QueryExecute('SELECT * FROM artists', [], {datasource = 'cfartgallery'}) jsonqueryresult = SerializeJSON(myquery) </cfscript> <cfset Start = 1> <cfset End = 1> <cfloop query="myquery" startRow = "#Start#" endRow = "#End#"> <cfset address = #myquery.ADDRESS#> </cfloop> <cfscript> collection.insertMany([{ key: myquery, name: "John Doe", }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() fileDataFromMongo = structFind(result, "key") </cfscript>

画像のシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students fileToRead = "#ExpandPath('./test1.png')#" myfile = FileOpen(fileToRead, "readBinary"); binaryFileContent = FileRead(myfile, 1000); stringContentForBinaryFile = toString(binaryFileContent) collection.insertMany([{ key: binaryFileContent, name: "John Doe" }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() fileDataFromMongo = structFind(result, "key"); fileInString = ToString(ToBinary(fileDataFromMongo)) </cfscript>

スプレッドシートのシリアル化

<cfscript> theDir=GetDirectoryFromPath(GetCurrentTemplatePath()); theFile=theDir & "courses.xls"; </cfscript> <cfspreadsheet action="read" src="#theFile#" sheetname="courses" name="spreadsheetData"> <cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students data = spreadsheetData collection.insertMany([{ key: data, name: "John Doe" }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() MongoResultSheet = spreadsheetRead(result.key) writedump(MongoResultSheet.ROWCOUNT) </cfscript>

XML のシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students myxml = fileRead(expandPath("./supportFiles/test.xml")); mydoc = XmlParse(myxml) collection.insertMany([{ key: mydoc , name: "John Doe" }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() fileDataFromMongo = structFind(result, "key"); fileInXML = DeserializeXML(fileDataFromMongo) </cfscript>

正規表現のシリアル化

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students percent = 44 collection.insertMany([{ name: "John Doe", marks:{ total: 15, percentage: 66-22 } }]); // mongo から読み取る result = collection.find({"name" : {$eq: "John Doe"}}).first() if( result.marks.percentage eq percent){ writeoutput("Pass"); } </cfscript>

GetMongoBsonMinKey と GetMongoBsonMaxKey

<cfscript> // データベース接続を取得する db = getmongoservice("mymongodb").db("cf_local") collection = db.students // 多数のドキュメントを挿入する res = collection.insertMany([{ enrollno: "110470116021", name: "John Adams", college: GetMongoBsonMinKey() }, { enrollno: "110470116022", name: "Jane Madison", college: GetMongoBsonMaxKey() }]) res = collection.find().toArray() </cfscript>

その他のデータ型

  • Date
  • BigInt
  • MongoObjectIdNew
  • MongoRegExpNew
  • MongoDBRefNew
  • MongoBsonJSNew
  • DataBaseReference

データベース操作

データベースの作成

MongoDB でデータベースを作成するには、サービスハンドラー関数 getmongoservice を使用して、データベースを作成します。

<cfscript> db = getmongoservice("mymongodb").db("mynewdb") // db を作成する writeDump(db) </cfscript>

コレクションの作成

データベースを作成したら、データベースにコレクションを挿入する必要があります。コレクションを作成するには、MongoDB データベースオブジェクトを作成してから、データベース内にコレクションを作成する必要があります。1 つのデータベースが複数のコレクションで構成されることがあります。

<cfscript> db = getmongoservice("mymongodb").db("mynewdb") // db を作成する db.createCollection("mynewdbcollection") // mynewdbcollection というコレクションを作成する </cfscript>

データベースのドロップ

<cfscript> db = getmongoservice("mymongodb").db("mynewdb") // db を作成する db.dropDatabase() // データベースを削除する </cfscript>

データベースの名前の取得

getName メソッドを使用して、データベースの名前を取得します。詳しくは、データベースの名前の取得を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("deeppurple") // db を作成する db.createCollection("members") // コレクションを作成する db.members.insertMany([ { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals","born": 1945 }, { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }, { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }, { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }, { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }, { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }, { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }, { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } ]) get_name=db.members.getName() writeOutput("The name of the database is: " & get_name) </cfscript>

データベース内のコレクション名の取得

getCollectionNames メソッドを使用して、データベース内のすべてのコレクションの名前を取得します。詳しくは、getCollectionNames のドキュメントを参照してください。出力は、コレクション名の配列です。

<cfscript> db = getmongoservice("mymongodb").db("rockband") // db を作成する db.deeppurple.drop() db.kingcrimson.drop() db.createCollection("deeppurple") // コレクションを作成する db.deeppurple.insertMany([ { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals","born": 1945 }, { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }, { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }, { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }, { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }, { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }, { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }, { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } ]) db.createCollection("kingcrimson") // 別のコレクションを作成する db.kingcrimson.insertMany([ {"_id":1,"name":"Robert Fripp","instrument":"Guitar", "_id":2, "name": "Greg Lake","instrument":"Bass", "_id":3, "name": "Ian McDonald","instrument":"Keyboard", "_id":4, "name": "Michael Giles", "instrument":"Drums"} ]) collection_names=db.getCollectionNames() writeDump(collection_names) </cfscript>

コレクションに関する情報の取得

getCollectionInfos メソッドは、現在のデータベースに関するコレクションまたはビュー情報(名前やオプションなど)を含むドキュメントの配列を返します。詳しくは、getCollectionInfos のドキュメントを参照してください。

<cfscript> // rockband データベースのすべてのコレクションに関する情報を返す db = getmongoservice("mymongodb").db("rockband") all_collections=db.getCollectionInfos() writeDump(all_collections) </cfscript>

特定のコレクションに関するコレクション情報をリクエストするには、この関数を呼び出す際にコレクション名を指定します。

<cfscript> // rockband データベースのすべてのコレクションに関する情報を返す db = getmongoservice("mymongodb").db("rockband") out=db.getCollectionInfos({"born":1948}) writeDump(out) </cfscript>

コレクション - CRUD メソッド

db.collection.count

コレクション内のドキュメントの数を数えます。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // members コレクション countResponse=db.members.count() writeDump(countResponse) // コレクション内のすべてのドキュメントを返す // クエリに一致するすべてのドキュメントの数を数える countResponse1=db.members.count( { born: { $gt: 1950 } } ) writeDump(countResponse1) // 条件に一致するドキュメントを返す </cfscript>

db.collection.countdocuments

この関数は、コレクションのクエリに一致するドキュメントの数を返します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // members コレクション countResponse=db.members.countDocuments() writeDump(countResponse) // コレクション内のすべてのドキュメントを返す // クエリに一致するすべてのドキュメントの数を数える countResponse1=db.members.countDocuments( { born: { $gt: 1950 } } ) writeDump(countResponse1) // 条件に一致するドキュメントを返す </cfscript>

db.collection.estimatedDocumentCount

この関数は、コレクションまたはビュー内のドキュメントの数を返します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // members コレクション countResponse=db.members.countDocuments() writeDump(countResponse) // コレクション内のすべてのドキュメントを返す // クエリに一致するすべてのドキュメントの数を数える countResponse1=db.members.estimatedDocumentCount( { born: { $gt: 1950 } } ) writeDump(countResponse1) // 条件に一致するドキュメントを返す </cfscript>

db.collection.deleteOne

この関数は、コレクションから単一のドキュメントを削除します。

<cfscript> // データベースを取得する db = getmongoservice("cosmos").db("mydb") collection = db.collection collection.drop() writeOutput("number of documents in the collection: <b>" & collection.count() & " </b><br/>") writeOutput("<b> Insert a document </b><br/>") // 多数のドキュメントを挿入する res = collection.insertMany([{ enrollno: "1001", name: "John Doe", college: "Any college", course: { courseName: "Any course", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "Any country" } }, { enrollno: "1002", name: "Jane Doe", college: "Some college", course: { courseName: "Some course", duration: "4 Years" }, address: { city: "Some city", state: "Some state", country: "Some country" } }]) //コレクション内のドキュメントの数を数える writeOutput("number of documents in the collection: <b>" & collection.count() & " </b><br/>") writeOutput("<b> Delete a document </b><br/>") collection.deleteOne({name: MongoRegExp("John Doe","i")}) writeOutput("number of documents in the collection: <b>" & collection.count() & " </b><br/>") </cfscript>

db.collection.deleteOne

この関数は、コレクションからフィルター条件に一致するすべてのドキュメントを削除します。

<cfscript> db = getmongoservice("mongodb").db("imdb"); db.orders.drop() db.orders.insertOne({ _id: MongoObjectId("563237a41a4d68582c2509da"), stock: "Brent Crude Futures", qty: 250, type: "buy-limit", limit: 48.90, creationts: ParseDateTime("2015-11-01T12:30:15Z"), expiryts: ParseDateTime("2015-11-01T12:35:15Z"), client: "Crude Traders Inc." }) writeoutput("count: " & db.orders.count() & " <br/>"); res = db.orders.deleteMany( { "client" : "Crude Traders Inc." } ); writedump(Res) writeoutput("count: " & db.orders.count() & " <br/>"); res = db.orders.deleteMany( { "stock" : "Brent Crude Futures", "limit" : { $gt : 48.88 } } ); writedump(Res) res = db.orders.deleteMany( { "client" : "Crude Traders Inc." }, { w : "majority", wtimeout : 100 } ); writedump(Res) writeoutput("collation example") db.mycoll.drop(); res = db.mycoll.insert([{ _id: 1, category: "café", status: "A" }, { _id: 2, category: "cafe", status: "a" }, { _id: 3, category: "cafE", status: "a" }]) writedump(res) res = db.myColl.deleteMany( { category: "cafe", status: "A" }, { collation: { locale: "fr", strength: 1 } } ) writedump(res) db.myColl.find().foreach((s) => { writedump(s) }) db.mycoll.drop(); db.orders.drop() </cfscript>

db.collection.distinct

この関数は、単一のコレクション内の指定されたフィールドの一意の値を見つけます。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); res = db.myColl1.insertMany([ { _id: 1, category: "café", status: 01 }, { _id: 2, category: "cafe", status: 02 }, { _id: 3, category: "cafE", status: 03 } ]) res = db.myColl1.distinct( "category", {}, { collation: { locale: "fr", strength: 1 } } ) writedump(res) </cfscript>

db.collection.drop

この関数は、データベースからコレクションを削除します。

<cfscript> db = getmongoservice("mymongodb").db("mynewdb") // db を作成する db.createCollection("mynewdbcollection") // mynewdbcollection というコレクションを作成する try { db.mynewdbcollection.drop() // コレクションを削除する writeOutput("Collection removed sucessfully.") } catch (any e){ writeOutput("Unable to remove collection.") } // </cfscript>

db.collection.explain

この関数は、このドキュメントにリストされたメソッドの情報を返します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // members コレクション // count 関数 explainResponse1=db.members.explain().count({ born:{$gt:1950} }) writeDump(explainResponse1) </cfscript>

db.collection.find

この関数は、コレクションまたはビュー内のドキュメントを選択します。詳しくは、db.collection.fine を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する //db.colFindDemo.drop() db.createCollection("colFindDemo") // コレクションを作成する db.colFindDemo.insertMany([ { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals","born": 1945 }, { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }, { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }, { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }, { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }, { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }, { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }, { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } ]) // すべてのドキュメントを返す db.colFindDemo.find() writedump(res) </cfscript>

その他のスニペット -

<cfscript> db.colFindDemo.find({"_id":4}) </cfscript> <cfscript> db.colFindDemo.find({"instrument":"Drums"}) </cfscript> <cfscript> df.colFindDemo.find({"_id":{$gt:4}}) // ID が 4 より大きいドキュメントを見つける </cfscript> <cfscript> df.colFindDemo.find({"instrument":{$regex:"^B"}}) // 楽器が B で始まるドキュメントを見つける </cfscript> <cfscript> db.colFindDemo.find({"name":{$in:["Ian Gillan","Ian Paice"]}}) // 氏名が一致するドキュメントを見つける </cfscript> <cfscript> db.colFindDemo.find({"born":{$all:[1948]}}) // 生年月日が一致する(1948 年を含んでいる)ドキュメントを見つける </cfscript> <cfscript> // 楽器が Drums か生年が 1948 年のすべてのドキュメントを見つける db.colFindDemo.find({$or:[{"instrument":"Drums"},{"born":1948}]}) </cfscript>

db.collection.insert

この関数は、1 つまたは複数のドキュメントをコレクションに挿入します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.createCollection("newcolThree") // コレクションを作成する // 単一のドキュメントを挿入する db.newcolThree.insert({ "_id": 1, "name":"John Lennon", "band":"Beatles" }) </cfscript>

db.collection.insertOne

この関数は、単一のドキュメントをコレクションに挿入します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.newcolThree.drop() // コレクションをドロップする db.createCollection("newcolThree") // コレクションを作成する // 単一のドキュメントを挿入する db.newcolThree.insert({ "_id": 1, "name":"John Lennon", "band":"Beatles" }) // 別のドキュメントを挿入する db.newcolThree.insertOne({ "_id": 2, "name":"Paul McCartney", "band":"Beatles" }) // 多数のドキュメントを挿入する db.newcolThree.insertMany([ { "_id": 3, "name":"George Harrison", "band":"Beatles" }, { "_id": 4, "name":"Ringo Starr", "band":"Beatles" } ]) </cfscript>

db.collection.insertMany

この関数は、複数のドキュメントをコレクションに挿入します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.newcolThree.drop() // コレクションをドロップする db.createCollection("newcolThree") // コレクションを作成する // 単一のドキュメントを挿入する db.newcolThree.insert({ "_id": 1, "name":"John Lennon", "band":"Beatles" }) // 別のドキュメントを挿入する db.newcolThree.insertOne({ "_id": 2, "name":"Paul McCartney", "band":"Beatles" }) // 多数のドキュメントを挿入する db.newcolThree.insertMany([ { "_id": 3, "name":"George Harrison", "band":"Beatles" }, { "_id": 4, "name":"Ringo Starr", "band":"Beatles" } ]) </cfscript>

db.collection.isCapped

この関数は、コレクションがキャップされたコレクションかどうかを確認します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する ifCapped=db.cappedLogCollection.isCapped() writeOutput("Is collection capped: "& ifCapped) </cfscript>

db.collection.latencyStats

この関数は、コレクションの遅延統計を返します。詳しくは、db.collection.latencyStats を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // members コレクション latencyStatsResponse=db.members.latencyStats( { histograms: true } ) writedump(latencyStatsResponse) </cfscript>

db.collection.remove

この関数は、コレクションからドキュメントを削除します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する db.createCollection("mycolone") // コレクションを作成する // 単一のドキュメントを挿入する db.mycolone.insert({ "_id": 1, "name":"John Lennon", "band":"Beatles" }) // 別のドキュメントを挿入する db.mycolone.insertOne({ "_id": 2, "name":"Paul McCartney", "band":"Beatles" }) // 多数のドキュメントを挿入する db.mycolone.insertMany([ { "_id": 3, "name":"George Harrison", "band":"Beatles" }, { "_id": 4, "name":"Ringo Starr", "band":"Beatles" } ]) // ドキュメントを削除する try{ db.mycolone.remove({}) writeOutput("Document removed sucessfully") } catch ( any e) { writeDump(e) } </cfscript>

db.collection.renameCollection

この関数は、コレクションの名前を変更します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // コレクションを作成する db.createCollection("coll_old") renameRes=db.coll_old.renameCollection("coll_new") writeDump(renameRes) </cfscript>

db.collection.replaceOne

この関数は、フィルターに基づいて、コレクション内の単一のドキュメントを置き換えます。

<cfscript> db = getmongoservice("mongodb").db("imdb"); //db.restaurant.drop() res = db.restaurant.insertMany([ { "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" }, { "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 }, { "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }]) // writedump(res) db.restaurant.find().foreach((s) => { writedump(s) }) res = db.restaurant.replaceOne( { "name" : "Central Perk Cafe" }, { "name" : "Central Pork Cafe", "Borough" : "Manhattan", "violations": 10 } ) writedump(res) </cfscript>

db.collection.stats

この関数は、コレクションの統計を返します。詳しくは、db.collection.stats を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する statsResponse=db.articles.stats() writeDump(statsResponse) </cfscript>

db.collection.storageSize

この関数は、コレクション内のドキュメントのストレージのサイズを返します。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); db.log.drop() col = db.createCollection("log", { capped : true, size : 5242880, max : 3 } ).count(); //writedump(col); res = db.log.insertMany([ { _id: 1, category: "café", status: 01 }, { _id: 2, category: "cafe", status: 02 }, { _id: 3, category: "cafE", status: 03 } ]) //writedump(res); writedump(db.log.storageSize()) </cfscript>

db.collection.storageSize

この関数は、コレクション内のデータの合計サイズ(バイト単位)を返します。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); db.log.drop() col = db.createCollection("log", { capped : true, size : 5242880, max : 3 } ).count(); //writedump(col); res = db.log.insertMany([ { _id: 1, category: "café", status: 01 }, { _id: 2, category: "cafe", status: 02 }, { _id: 3, category: "cafE", status: 03 } ]) //writedump(res); writedump(db.log.totalSize()) </cfscript>

db.collection.update

この関数は、コレクション内の 1 つまたは複数のドキュメントを変更します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdDemo.drop() db.createCollection("colUpdDemo") // コレクションを作成する db.colUpdDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47" }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74" }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53" } ]) // _id:1 のドキュメントの数量を 10 だけインクリメントする db.colUpdDemo.update({"_id":1},{$inc:{"quantity":10}}) // 単位原価 8.74 から 10.74 に更新する db.colUpdDemo.update({"_id":2},{$set:{"unit_cost": "$10.74"}}) </cfscript>

db.collection.updateOne

この関数は、フィルターに基づいて、コレクション内の単一のドキュメントを変更します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdDemo.drop() db.createCollection("colUpdDemo") // コレクションを作成する db.colUpdDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47", "stock":10000 }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74", "stock":15000 }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53", "stock":20000 } ]) db.colUpdDemo.updateOne({"supplier": "Keebler-Hilpert"},{$set:{"stock":16000}}) </cfscript>

db.collection.updateMany

この関数は、フィルターに基づいて、コレクション内のすべてのドキュメントを変更します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdManyDemo.drop() db.createCollection("colUpdManyDemo") // コレクションを作成する db.colUpdManyDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47", "stock":10000 }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74", "stock":15000 }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53", "stock":20000 } ]) // 指定のフィルターに基づいて複数のドキュメントを更新する db.colUpdManyDemo.updateMany( {"quantity" : {$gt: 250 }}, {$set: { "stock" : 50000 } } ); </cfscript>

db.collection.validate

この関数は、コレクションをスキャンして、コレクションが有効かどうかを判定します。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する db.colUpdManyDemo.drop() db.createCollection("colUpdManyDemo") // コレクションを作成する db.colUpdManyDemo.insertMany([ { "_id":1, "product_name": "sildenafil citrate", "supplier": "Wisozk Inc", "quantity": 261, "unit_cost": "$10.47", "stock":10000 }, { "_id":2, "product_name": "Mountain Juniperus ashei", "supplier": "Keebler-Hilpert", "quantity": 292, "unit_cost": "$8.74", "stock":15000 }, { "_id":3, "product_name": "Dextromathorphan HBr", "supplier": "Schmitt-Weissnat", "quantity": 211, "unit_cost": "$20.53", "stock":20000 } ]) // 指定のフィルターに基づいて複数のドキュメントを更新する db.colUpdManyDemo.updateMany( {"quantity" : {$gt: 250 }}, {$set: { "stock" : 50000 } } ); isValidate=db.colUpdManyDemo.validate() writeDump(isValidate) </cfscript>

コレクション - 高度なメソッド

db.collection.bulkWrite

この関数は、複数の書き込み操作を実行します。実行順序を定義できます。

<cfscript> // データベースを取得する db = getmongoservice("mymongodb").db("imdb") db.characters.drop() db.characters.insert([ { "_id" : 1, "char" : "Brisbane", "class" : "monk", "lvl" : 4 }, { "_id" : 2, "char" : "Eldon", "class" : "alchemist", "lvl" : 3 }, { "_id" : 3, "char" : "Meldane", "class" : "ranger", "lvl" : 3 } ]) res = db.characters.bulkWrite([ { insertOne: { "document": { "_id": 4, "char": "Dithras", "class": "barbarian", "lvl": 4 } } }, { insertOne: { "document": { "_id": 5, "char": "Taeln", "class": "fighter", "lvl": 3 } } }, { updateOne : { "filter" : { "char" : "Eldon" }, "update" : { $set : { "status" : "Critical Injury" } } } }, { deleteOne : { "filter" : { "char" : "Brisbane"} } }, { replaceOne : { "filter" : { "char" : "Meldane" }, "replacement" : { "char" : "Tanys", "class" : "oracle", "lvl": 4 } } } ]) writedump(res) </cfscript>

db.collection.findAndModify

この関数は、単一のドキュメントを変更して返します。詳しくは、db.collection.findandmodify を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("student_db") db.students.drop() // コレクションを作成する db.createCollection("students") // 多数のドキュメントを挿入する db.students.insertMany([ { enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }, { enrollno: "1002", name: "Jane Doe", college: "Vassar", course: { courseName: "Physics", duration: "4 Years" }, address: { city: "Some city", state: "Some state", country: "USA" } }]) try{ res = db.students.findAndModify({ $and : [{ "enrollno" : {$gt : "1002"}} , {"name" : {$eq:"Jane Smith"}}]}) writeDump(res) writeOutput("Record modified successfully") } catch(any e){ writeDump(e) } </cfscript>

db.collection.findOne

この関数は、フィルターに基づいて、単一のドキュメントを返します。詳しくは、db.collection.findone を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") // db を作成する //db.music.drop() db.createCollection("music") // コレクションを作成する db.music.insertMany([ { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals","born": 1945 }, { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }, { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }, { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }, { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }, { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }, { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }, { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } ]) try{ res = db.music.findOne( {"name" : {$eq:"Ian Gillan"}}) writeDump(res) writeOutput("Record returned successfully") } catch(any e){ writeDump(e) } </cfscript>

db.collection.findOneAndDelete

この関数は、フィルターに基づいて、単一のドキュメントを削除します。詳しくは、db.collection.findoneandを削除 を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("student_db") db.students.drop() // コレクションを作成する db.createCollection("students") // 多数のドキュメントを挿入する db.students.insertMany([ { enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }, { enrollno: "1002", name: "Jane Doe", college: "Vassar", course: { courseName: "Physics", duration: "4 Years" }, address: { city: "Some city", state: "Some state", country: "USA" } }]) try{ res = db.students.findOneAndDelete({ $and : [{ "enrollno" : {$gt : "1000"}} , {"name" : {$eq:"Jane Doe"}}]}) writeDump(res) writeOutput("Record deleted successfully") } catch(any e){ writeDump(e) } </cfscript>

db.collection.findOneAndReplace

この関数は、フィルターに基づいて、単一のドキュメントを置き換えます。詳しくは、db.collection.findoneandreplace を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") //db.team.drop() // コレクションを作成する db.createCollection("team") // 多数のドキュメントを挿入する db.team.insertMany([ { "_id" : 1521, "team" : "Fearful Mallards", "score" : 25000 }, { "_id" : 2231, "team" : "Tactful Mooses", "score" : 23500 }, { "_id" : 4511, "team" : "Aquatic Ponies", "score" : 19250 }, { "_id" : 5331, "team" : "Cuddly Zebras", "score" : 15235 }, { "_id" : 3412, "team" : "Garrulous Bears", "score" : 22300 } ]) try{ res = db.team.findOneAndReplace( { "score" : { $lt : 30000 } }, { "team" : "Observant Badgers", "score" : 20000 , "owner" : "disney"}, { sort : { "score" : -1 }, projection: { "_id" : 0, "team" : 1 } } ) writeOutput("Record returned successfully") writeDump(res) } catch (any e) { writeDump(e) } </cfscript>

db.collection.findOneAndUpdate

この関数は、フィルターに基づいて、単一のドキュメントを更新します。詳しくは、db.collection.findoneandupdate を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("newdb") //db.grades.drop() db.createCollection("grades") // 多数のドキュメントを挿入する db.grades.insertMany([ { _id: 6305, name : "A. MacDyver", "assignment" : 5, "points" : 24 }, { _id: 6308, name : "B. Batlock", "assignment" : 3, "points" : 22 }, { _id: 6312, name : "M. Tagnum", "assignment" : 5, "points" : 30 }, { _id: 6319, name : "R. Stiles", "assignment" : 2, "points" : 12 }, { _id: 6322, name : "A. MacDyver", "assignment" : 2, "points" : 14 }, { _id: 6234, name : "R. Stiles", "assignment" : 1, "points" : 10 } ]) // レコードが見つかったら(レコードが存在したら)、オプションを使用する try{ res = db.grades.findOneAndUpdate( { "name" : "A. MacDyver" }, { $inc : { "points" : 5 } }, { sort : { "points" : 1 }, projection: { "assignment" : 1, "points" : 1 } } ) writeOutput("Record updated successfully") } catch(any e){ writeDump(e) } </cfscript>

集計メソッド

db.collection.aggregate

この関数は、コレクション内のデータの値を集計します。詳しくは、db.collection.aggregate を参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する db.scores.drop() // コレクションを作成する db.createCollection("scores") db.scores.insertMany([ { _id: 1, student: "Maya", homework: [ 10, 5, 10 ], quiz: [ 10, 8 ], extraCredit: 0 }, { _id: 2, student: "Ryan", homework: [ 5, 6, 5 ], quiz: [ 8, 8 ], extraCredit: 8 } ]) addFieldsResponse=db.scores.aggregate( [ { $addFields: { totalHomework: { $sum: "$homework" } , totalQuiz: { $sum: "$quiz" } } }, { $addFields: { totalScore: { $add: [ "$totalHomework", "$totalQuiz", "$extraCredit" ] } } } ] ) writeDump(addFieldsResponse) </cfscript>

db.collection.distinct

この関数は、コレクション内の一意の値を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = mongoservice("mymongodb").db("db_source") // db を作成する // members コレクション distinctResponse=db.members.distinct("instrument") writeDump(distinctResponse) </cfscript>

db.collection.count

コレクション内のドキュメントの数を数えます。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // members コレクション countResponse=db.members.count() writeDump(countResponse) // コレクション内のすべてのドキュメントを返す // クエリに一致するすべてのドキュメントの数を数える countResponse1=db.members.count( { born: { $gt: 1950 } } ) writeDump(countResponse1) // 条件に一致するドキュメントを返す </cfscript>

db.collection.mapReduce

この関数は、mapReduce 関数のラッパーとして機能します。詳しくは、公式ドキュメントを参照してください。

<cfscript> try { db = getmongoservice("mymongodb").db("mrd") collection_orders = db.collection("orders") //writedump(collection_orders); collection_orders.insertmany([ { _id: CreateUUID(), cust_id: "abc123", ord_date:DateFormat("Oct 04, 2012"), status: 'A', price: 25, items: [ { sku: "mmm", qty: 5, price: 2.5 }, { sku: "nnn", qty: 5, price: 2.5 } ] }, { _id: CreateUUID(), cust_id: "def123", ord_date:DateFormat("Oct 04, 2012"), status: 'A', price: 25, items: [ { sku: "mmm", qty: 5, price: 2.5 }, { sku: "nnn", qty: 5, price: 2.5 } ] } ]) mapFunction1 = function() { emit(this.cust_id, this.price); } reduceFunction1 = function(keyCustId, valuesPrices){ return Array.sum(valuesPrices); } res = collection_orders.mapReduce( "#mapFunction1#", "#reduceFunction1#", { out: "sample_output"}) writeoutput("No of records fetched after map-reduce:" & res.len()); writeoutput("<br>Value returned from records:" & res[1].value & "," & res[2].value) } catch(any e){ writedump(e) } finally{ db.orders.drop(); db.runCommand({dropDatabase:1}); } </cfscript>

ストリームメソッド

MongoDB では、MongoDB のレプリケーション機能を使用することで、リアルタイムデータの変更をアプリケーションでストリーミングできます。ストリームは、リアルタイムでのデータ更新に役立ち、アプリケーションは最新のデータにアクセスできます。例えば、トレーディングシステムや IOT データは、データストリームを広く使用します。

変更ストリームは、変更が発生する限り、データのポーリングなしに、ドキュメントへのすべての書き込みをアプリケーションに通知し、情報へのアクセスを提供します。

Collections.watch

この関数は、コレクションの変更ストリームを開きます。詳しくは、db.collection.watch を参照してください。

<cfscript> // データベースを取得する db = getmongoservice("sharded").db("streamtest"); res = db.adminCommand( { enableSharding: "streamtest" } ) collection = db.Students; res = db.adminCommand( { shardCollection: "streamtest.Students", key: { enrollno: 1 } } ); cursor = collection.watch(); // 多数のドキュメントを挿入する res = collection.insertMany([{ enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }]) streamRes = cursor.Next(); writedump(var=streamRes , label="Cursor.next"); </cfscript>

クエリのキャッシュ

次の属性を使用して、MongoDB でキャッシュを実装できます。

CachedAfter:cachedAfter 属性を使用して、MongoDB クエリをキャッシュできます。そのクエリが、提供された日付以降、最後に実行された場合、キャッシュされたデータが使用されます。それ以外の場合は、そのクエリが再実行されます。

CachedWithin:cachedWithin 属性は、まさにそのクエリからの結果セットがまだメモリ内にない場合にのみ、MongoDB クエリを実行するよう ColdFusion に指示します。

cachedAfter

<cfscript> db = getmongoservice("mymongodb").db("db_cache") // db を作成する collection = db.students // 多数のドキュメントを挿入する collection.insertMany([ { enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }, { enrollno: "1002", name: "Jane Doe", college: "Vassar", course: { courseName: "Physics", duration: "4 Years" }, address: { city: "Some city", state: "Some state", country: "USA" } }]) currentDate = now(); res1 = collection.find({ $and : [{ "enrollno" : {$gt : "1000"}} , {"name" : {$eq: "John Doe"}}]}).cachedAfter(DateAdd("s",3,currentDate)).toArray(); writeOutput("<br/>Reading from db... Count is " & ArrayLen(res1)); collection.insertMany([{ enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }]) sleep(1000); res = collection.find({ $and : [{ "enrollno" : {$gt : "1000"}} , {"name" : {$eq: "John Doe"}}]}).cachedAfter(DateAdd("s",3,currentDate)).toArray(); writeOutput("<br/>reading from db before cacheAfter time... Count is " & ArrayLen(res)); </cfscript>

cachedWithin

<cfscript> db = getmongoservice("mymongodb").db("db_cache") // db を作成する collection = db.students // 多数のドキュメントを挿入する collection.insertMany([ { enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }, { enrollno: "1002", name: "Jane Doe", college: "Vassar", course: { courseName: "Physics", duration: "4 Years" }, address: { city: "Some city", state: "Some state", country: "USA" } }]) currentDate = now(); res1 = collection.find({ $and : [{ "enrollno" : {$gt : "1000"}} , {"name" : {$eq: "John Doe"}}]}).cachedAfter(DateAdd("s",3,currentDate)).toArray(); writeOutput("<br/>Reading from db... Count is " & ArrayLen(res1)); collection.insertMany([{ enrollno: "1001", name: "John Doe", college: "Amherst", course: { courseName: "Math", duration: "4 Years" }, address: { city: "Any city", state: "Any state", country: "USA" } }]) sleep(1000) res = collection.find({ $and : [{ "enrollno" : {$gt : "1000"}} , {"name" : {$eq: "John Doe"}}]}).cachedWithin(createTimespan(0, 0, 0, 5)).toArray(); writeOutput("<br/>reading from cache... Count is " & ArrayLen(res)); </cfscript>

GridFS メソッド

GridFS では、1 つのファイルを単一のドキュメントで保存する代わりに、複数のファイルを複数のチャンクで保存します。各チャンクは、個別のドキュメントとして保存されます。詳しくは、GridFS を参照してください。

1 つのファイルを単一のドキュメントに保存する代わりに、GridFS では、そのファイルを複数のパーツまたはチャンク[1] に分割し、各チャンクを個別のドキュメントとして保存します。

db.createBucket

GridFS は、複数のコレクションを 1 つのバケットに保存します。この関数は、コレクションにインデックスを作成します。 

<cfscript> db=getmongoservice("mymongodb").db("newdb") try{ res=db.createBucket("newbucket") // バケットを作成する writeOutput("Bucket created successfully") writeDump(res) } catch(any e){ writeDump(e) } finally{ res.drop() } </cfscript>

bucket.upload

1 つのファイルを 1 つのバケットでアップロードします。

<cfscript> bucket = getmongoservice("mymongodb").db("newdb").createbucket("bucket3"); try{ returnId = bucket.upload(expandPath(".") & "/exception.log") writeOutput("File uploaded successfully") writeDump(returnId) } catch(any e){ writeDump(e) } </cfscript>

bucket.download

1 つのバケットから 1 つのファイルをダウンロードします。

<cfscript> bucket = getmongoservice("mymongodb").db("newdb").createbucket("bucket"); // ファイルをアップロードする returnId = bucket.upload(expandPath(".") & "/exception.log") try{ result = bucket.download(expandPath("."), mongoObjectId(returnId)) writeOutput("File downloaded successfully") writeDump(result) } catch(any e){ writeDump(e) } </cfscript>

bucket.rename

バケットのファイル名を変更します。

<cfscript> bucket = getmongoservice("mymongodb").db("newdb").createbucket("bucket") // ファイルをアップロードする returnId = bucket.upload(expandPath(".")& "/exception.log") // バケット内のファイルの名前を変更する try{ bucket.rename(returnId, "exceptionNew.log") writeOutput("File renamed successfully") } catch(any e){ writeDump(e) } </cfscript>

bucket.find

バケット内のファイルを検索します。

<cfscript> bucket = getmongoservice("mymongodb").db("newdb").createbucket("bucket") // ファイルをアップロードする returnId = bucket.upload(expandPath(".")& "/exception.log") // バケット内のファイルの名前を変更する bucket.rename(returnId, "exceptionNew.log") try{ res = bucket.find({filename: "exceptionNew.log"}).toArray() // ファイルを見つける if(res[1].filename == "exceptionNew.log") { writeoutput("File has been found.")} } catch(any e){ writeDump(e) } </cfscript>

bucket.delete

バケット内のファイルを削除します。

<cfscript> bucket = getmongoservice("mymongodb").db("newdb").createbucket("bucket") // ファイルをアップロードする returnId = bucket.upload(expandPath(".")& "/exception.log") try{ res = bucket.delete(returnId) if(res.name == "bucket"){ writeoutput("File deleted successfully") } } catch (any e){ writeDump(e) } </cfscript>

bucket.drop

バケットを削除します。

<cfscript> bucket = getmongoservice("mymongodb").db("newdb").createbucket("bucket") try{ res = bucket.drop() if(res.name == "bucket"){ writeoutput("Bucket is deleted successfully") } } catch(any e){ writeDump(e) } </cfscript>

インデックスメソッド

db.collection.createIndex

この関数は、コレクションにインデックスを作成します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); //db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する indexRes = db.products.createIndex( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) writedump(indexRes) </cfscript>

db.collection.createIndexes

この関数は、1 つのコレクションに 1 つまたは複数のインデックスを作成します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); //db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する indexRes = db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) writedump(indexRes) </cfscript>

db.collection.dropIndex

この関数は、指定された 1 つのインデックスをコレクションから削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); //db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する createIdx=db.products.createIndex( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) // インデックスをドロップする db.products.dropIndex(createIdx) </cfscript>

db.collection.dropIndexes

この関数は、指定された 1 つまたは複数のインデックスをコレクションから削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); //db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する createIdx=db.products.createIndex( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) // インデックスをドロップする db.products.dropIndexes(createIdx) </cfscript>

db.collection.getIndexes

この関数は、コレクションの既存のインデックスを説明します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); // db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) // インデックスを取得する getRes=db.products.getIndexes() writeDump(getRes) </cfscript>

db.collection.reIndex

この関数は、コレクションのすべてのインデックスを削除して、再構築します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); // db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) // インデックスを再作成する try{ res=db.products.reIndex() writeOutput("Indexes removed and re-created successfully") writeDump(res) } catch(any e){ writeDump(e) } </cfscript>

db.collection.totalIndexSize

この関数は、コレクション内のすべてのインデックスの合計サイズを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("imdb"); // db.products.drop() db.createCollection("products") // ドキュメントを挿入する db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } ]) // インデックスを作成する db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ]) totSize=db.products.totalIndexSize() writeDump(totSize) </cfscript>

データベースメソッド

db.adminCommand

db.adminCommand は、データベースコマンドを実行するためのヘルパー関数を提供します。詳しくは、公式ドキュメントを参照してください。

次に、db.adminCommand() を使用して、db_source データベースの collection1 コレクションの名前を collection11 に変更するために、renameCollection データベースコマンドを実行する例を示します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する renameResponse= db.adminCommand( { renameCollection: "db_source.collection1", to: "db_source.collection11" } ) writeDump(renameResponse) </cfscript>

db.createCollection

コレクションを作成します。このメソッドを使用して、キャップされたコレクションを作成することもできます。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する isSuccessful=db.createCollection("log", { capped : true, size : 5242880, max : 5000 } ) writeDump(isSuccessful) </cfscript>

db.createView

この関数は、指定された集計パイプラインをソースコレクションまたはビューに適用した結果として、ビューを作成します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // コレクションを作成する db.createCollection("survey") db.survey.insertMany([ { _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" }, { _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" }, { _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" } ]) // ビューを作成する viewResponse=db.createView( "managementFeedback", "survey", [ { $project: { "management": "$feedback.management", department: 1 } } ] ) writeDump(viewResponse) </cfscript>

db.currentOp

この関数は、そのデータベースインスタンスに対する進行中の操作に関する情報を含むドキュメントを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // データベース db_source に対する実行中の操作のうち、 // 実行時間が 3 秒を超えているすべての操作に関する情報を返す currentOpResponse=db.currentOp( { "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db_source\./ } ) writeDump(currentOpResponse) </cfscript>

db.getCollection

この関数は、そのデータベースの任意のコレクションのコレクションオブジェクトを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する collectionResponse=db.getCollection("survey") writeDump(collectionResponse) </cfscript>

db.getCollectionInfos

この関数は、現在のデータベースに関するコレクションまたはビュー情報(名前やオプションなど)を含むドキュメントの配列を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する collInfoResponse=db.getCollectionInfos() writeDump(collInfoResponse) </cfscript>

db.getCollectionNames

この関数は、現在のデータベースのすべてのコレクションおよびビューの名前を含む配列を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する collNamesResponse=db.getCollectionNames() writeDump(collNamesResponse) </cfscript>

db.getMongo

この関数は、現在のデータベース接続を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する mongoResponse=db.getMongo() writeDump(mongoResponse) </cfscript>

db.getName

この関数は、現在のデータベースの名前を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する nameResponse=db.getName() writeDump(nameResponse) </cfscript>

db.getSiblingDB

この関数は、データベースオブジェクトを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する siblingResponse=db.getSiblingDB("db_source") writeDump(siblingResponse) </cfscript>

db.hostInfo

この関数は、mongod または mongos を実行しているシステムの情報を含む配列を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する hostInfoResponse=db.hostInfo() writeDump(hostInfoResponse) </cfscript>

db.isMaster

この関数は、mongod セッションを記述する配列を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する isMasterResponse=db.isMaster() writeDump(isMasterResponse) </cfscript>

db.runCommand

この関数は、次のデータベースコマンドのヘルパーとして機能します。

コマンド

説明

logout

現在の認証されたセッションを終了します。

createUser

新規ユーザーを作成します。

dropAllUsersFromDatabase

データベースに関連付けられたすべてのユーザーを削除します。

dropUser

単一のユーザーを削除します。

grantRolesToUser

ユーザーにロールおよびその権限を付与します。

revokeRolesFromUser

ユーザーからロールを削除します。

updateUser

ユーザーのデータを更新します。

usersInfo

指定されたユーザーに関する情報を返します。

createUser

新規ユーザーを作成します。

dropAllUsersFromDatabase

データベースに関連付けられたすべてのユーザーを削除します。

dropUser

単一のユーザーを削除します。

grantRolesToUser

ユーザーにロールおよびその権限を付与します。

revokeRolesFromUser

ユーザーからロールを削除します。

updateUser

ユーザーのデータを更新します。

usersInfo

指定されたユーザーに関する情報を返します。

createRole

ロールを作成し、その権限を指定します。

dropRole

ユーザー定義ロールを削除します。

dropAllRolesFromDatabase

データベースからすべてのユーザー定義ロールを削除します。

grantPrivilegesToRole

ユーザー定義ロールに権限を割り当てます。

grantRolesToRole

ユーザー定義ロールが権限を継承するロールを指定します。

invalidateUserCache

資格情報およびロールを含む、ユーザー情報のメモリ内キャッシュをフラッシュします。

revokePrivilegesFromRole

ユーザー定義ロールから指定された権限を削除します。

revokeRolesFromRole

ユーザー定義ロールから指定された継承済みロールを削除します。

rolesInfo

指定された 1 つまたは複数のロールの情報を返します。

updateRole

ユーザー定義ロールを更新します。

delete

1 つまたは複数のドキュメントを削除します。

find

コレクションまたはビュー内のドキュメントを選択します。

findAndModify

単一のドキュメントを返して変更します。

getLastError

最後の操作の成功ステータスを返します。

insert

1 つまたは複数のドキュメントを挿入します。

resetError

最後のエラーステータスをリセットします。

update

1 つまたは複数のドキュメントを更新します。

このコマンドは、順序指定されていない構造体が送信されると、失敗することがあります。MongoDB 関数は、特定の順序でキーを受け入れ、ColdFusion 経由で送信します。これらのキーが順序指定されていることを確認してください。したがって、これらすべてのコマンドについて、順序指定された構造体を使用してください。

例えば、次のように入力します。

res = db.runCommand ([ "createUser" : "mongouser2", "pwd" : "testpassword", "customData" : {"testUser":"ok"}, "roles": [["role":"readWrite","db":dbName]] ])

db.serverBuildInfo

この関数は、この mongod インスタンスのコンパイルに使用されるパラメーターの概要を含むドキュメントを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する buildResponse=db.serverBuildInfo() writeDump(buildResponse) </cfscript>

db.serverStatus

この関数は、データベース処理の状態の概要を提供する構造体を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する serverResponse=db.serverStatus() writeDump(serverResponse) </cfscript>

db.stats

この関数は、データベースの統計を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する statsResponse=db.stats(1024) // バイト単位ではなくキロバイト単位で表示するには、スケール値を 1024 に指定する writeDump(statsResponse) </cfscript>

db.version

この関数は、mongo インスタンスのバージョンを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する versionResponse=db.version() writeDump(versionResponse) </cfscript>

ユーザー管理メソッド

db.changeUserPassword

この関数は、ユーザーのパスワードを更新します。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する db.changeUserPassword("username","password") </cfscript>
<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する db.changeUserPassword("username",passwordPrompt()) // 新しいパスワードの入力を促す </cfscript>

db.createUser

この関数は、メソッドが実行されるデータベースの新規ユーザーを作成します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する createResponse=db.createUser( { user: "User1", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) writeDump(createResponse) </cfscript>

db.dropUser

この関数は、現在のデータベースからユーザーを削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する dropResponse=db.dropUser("User1") writeDump(dropResponse) </cfscript>

db.dropAllUsers

この関数は、データベースのすべてのユーザーをドロップします。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // ユーザーを 3 名作成する db.createUser( { user: "User1", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) db.createUser( { user: "User2", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) db.createUser( { user: "User3", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) dropAllResponse=db.dropAllUsers({w: "majority", wtimeout: 5000}) writeDump(dropAllResponse) </cfscript>

db.getUser

この関数は、指定されたユーザーに関する情報を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // ユーザーを作成する db.createUser( { user: "User1", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) getUserResponse=db.getUser("User1") writeDump(getUserResponse) </cfscript>

db.getUsers

この関数は、データベースのすべてのユーザーに関する情報を返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // ユーザーを 3 名作成する db.createUser( { user: "User11", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) db.createUser( { user: "User12", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) db.createUser( { user: "User13", pwd: "admin123", roles: [ "readWrite", "dbAdmin" ] } ) getUsersResponse=db.getUsers() writeDump(getUsersResponse) </cfscript>

db.grantRolesToUser

この関数は、ユーザーにロールを付与します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する // ユーザーを作成する db.createUser( { user: "User001", pwd: "admin123", roles: ["dbAdmin"] } ) grantRoleResponse=db.grantRolesToUser("User001",["read","readWrite"]) writeDump(grantRoleResponse) </cfscript>

db.revokeRolesFromUser

この関数は、現在のデータベースの 1 人のユーザーから 1 つまたは複数のロールを削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する revokeRoleResponse=db.revokeRolesFromUser("User001",["read","readWrite"]) writeDump(revokeRoleResponse) </cfscript>

db.updateUser

この関数は、データベース上のユーザーのプロファイルを更新します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する updateRole={ roles:["read","readWrite"] } updateUserResponse=db.updateUser("User001",updateRole) writeDump(updateUserResponse) </cfscript>

ロール管理メソッド

db.createRole

この関数は、データベースにロールを作成します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する roleDocument={ "role": "newRead", "privileges": [ [ resource: [ db: "db_source" , collection: "" ], actions: [ "find", "createCollection", "dbStats", "collStats" ] ] ], "roles":[] } createRoleResponse=db.createRole(roleDocument) writeDump(createRoleResponse) </cfscript>

db.dropRole

この関数は、データベースからユーザー定義ロールを削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source_1") // db を作成する // ユーザー定義ロールを作成する dbName="db_source_1" db.createRole( [ role: "customrole1", privileges: [ [ resource: [ db: dbName , collection: "" ], actions: [ "find", "createCollection", "dbStats", "collStats" ] ], [ resource: [ db: dbName, collection: "logs" ], actions: [ "insert" ] ], [ resource: [ db: dbName, collection: "data" ], actions: [ "insert", "update", "remove", "compact" ] ], [ resource: [ db: dbName, collection: "system.js" ], actions: [ "find" ] ] ], roles : [["role":"userAdmin","db":dbName], ["role":"readWrite","db":dbName] ] ]) dropRoleResponse=db.dropRole("customrole1") writeDump(dropRoleResponse) </cfscript>

db.dropAllRoles

この関数は、データベース上のすべてのユーザー定義ロールを削除します。

<cfscript> db = getmongoservice("mymongodb").db("db_source_1") // db を作成する dbName="db_source_1" // カスタムロールを 3 つ作成する db.createRole( [ role: "customrole11", privileges: [ [ resource: [ db: dbName , collection: "" ], actions: [ "find", "createCollection", "dbStats", "collStats" ] ], [ resource: [ db: dbName, collection: "logs" ], actions: [ "insert" ] ], [ resource: [ db: dbName, collection: "data" ], actions: [ "insert", "update", "remove", "compact" ] ], [ resource: [ db: dbName, collection: "system.js" ], actions: [ "find" ] ] ], roles : [["role":"userAdmin","db":dbName], ["role":"readWrite","db":dbName] ] ]) db.createRole( [ role: "customrole12", privileges: [ [ resource: [ db: dbName , collection: "" ], actions: [ "find", "createCollection", "dbStats", "collStats" ] ], [ resource: [ db: dbName, collection: "logs" ], actions: [ "insert" ] ], [ resource: [ db: dbName, collection: "data" ], actions: [ "insert", "update", "remove", "compact" ] ], [ resource: [ db: dbName, collection: "system.js" ], actions: [ "find" ] ] ], roles : [["role":"userAdmin","db":dbName], ["role":"readWrite","db":dbName] ] ]) dropAllRolesResponse=db.dropAllRoles({ w: "majority" }) writeDump(dropAllRolesResponse) </cfscript>

db.getRole

この関数は、このロールの権限の継承元のロールを返します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source_1") // db を作成する getRoleResponse=db.getRole("newRead",{ "showBuiltinRoles":true, "showPrivileges":true }) writeDump(getRoleResponse) </cfscript>

db.getRoles

この関数は、データベース内のすべてのロールの情報を取得します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source_1") // db を作成する getAllRolesResponse=db.getRoles( { rolesInfo: 1, showPrivileges:true, showBuiltinRoles: true } ) writeDump(getAllRolesResponse) </cfscript>

db.grantPrivilegesToRole

この関数は、ユーザー定義ロールに追加の権限を付与します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する dbName="db_source" grantResponse=db.grantPrivilegesToRole("newRead", [ { resource: { db: dbName, collection: "" }, actions: [ "insert" ] }, { resource: { db: dbName, collection: "system.js" }, actions: [ "find" ] } ] ) writeDump(grantResponse) </cfscript>

db.revokePrivilegesFromRole

この関数は、データベース上のユーザー定義ロールから指定された権限を削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する dbName="db_source" // ユーザー定義ロールを作成する db.createrole( [ role: "customrole005", privileges: [ [ resource: [ db: dbName , collection: "" ], actions: [ "find", "createCollection", "dbStats", "collStats" ] ], [ resource: [ db: dbName, collection: "logs" ], actions: [ "insert" ] ], [ resource: [ db: dbName, collection: "data" ], actions: [ "insert", "update", "remove", "compact" ] ], [ resource: [ db: dbName, collection: "system.js" ], actions: [ "find" ] ] ], roles : [["role":"userAdmin","db":dbName], ["role":"readWrite","db":dbName] ] ]) revokeResponse=db.revokePrivilegesFromRole("customrole002", [ { resource: { db: dbName, collection: "" }, actions: [ "find","createCollection" ] }, { resource: { db: dbName, collection: "system.js" }, actions: [ "find" ] } ] ) writeDump(revokeResponse) </cfscript>

db.grantRolesToRole

この関数は、ユーザー定義ロールにロールを付与します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する grantRoleUDR=db.grantRolesToRole("customrole005",["read"]) writeDump(grantRoleUDR) </cfscript>

db.revokeRolesFromRole

この関数は、ロールから指定された継承済みロールを削除します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する revokeRoleUDR=db.revokeRolesFromRole("customrole005",["read"]) writeDump(revokeRoleUDR) </cfscript>

db.updateRole

この関数は、ユーザー定義ロールを更新します。詳しくは、公式ドキュメントを参照してください。

<cfscript> db = getmongoservice("mymongodb").db("db_source") // db を作成する dbName="db_source" roleDocument={ privileges:[ [ resource: [ db: dbName , collection: "" ], actions: [ "find", "createCollection", "dbStats", "collStats" ] ] ], roles:["read","readWrite"] } updateRoleResponse=db.updateRole("customrole005",roleDocument) writeDump(updateRoleResponse) </cfscript>

制約

GSSAPI 認証は MongoDB ではサポートされていません。

その他の関連ヘルプ