RDBMS
概要
MongoDBは、クロスプラットフォームでドキュメントベースの NoSQL データベースです。JSON/BSON のようなドキュメントとスキーマを使用します。
- MongoDB は、データを柔軟な JSON のようなドキュメントに保存します。つまり、フィールドはドキュメントによって変化する可能性があり、データ構造は時間の経過と共に変化する可能性があります。
- ドキュメントモデルは、アプリケーションコードのオブジェクトにマッピングされていて、データを扱いやすくなっている。
- アドホッククエリ、インデックス作成およびリアルタイム集計により、データへのアクセスおよび分析に強力な方法を提供します。
- MongoDB の中心は分散データベースなので、高可用性、水平方向のスケーリング、地理的分布が備わっており、使いやすくなっています。
MongoDB の機能
次に、MongoDB の機能の一部を示します。
- クエリ:MongoDB は、アドホッククエリおよびドキュメントベースのクエリをサポートします。また、フィールド、範囲クエリ、正規表現による検索もサポートします。
- インデックス作成:ドキュメントの任意のフィールドにインデックスを設定できます。
- レプリケーション:MongoDB は、主従のレプリケーションをサポートします。MongoDB は、ネイティブアプリケーションを使用してデータの複数のコピーを維持します。
- 複数のサーバー:データベースは、複数のサーバーで実行できます。ハードウェアエラーに対するシステムの堅牢性を高めるために、データは複製されます。
- 自動シャーディング:この処理は、複数の物理パーティション(シャードと呼ばれる)にデータを分散させます。シャーディングにより、MongoDB には自動ロードバランシング機能が備わっています。
- MapReduce:MapReduce および柔軟な集計ツールをサポートします。
MongoDB の機能について詳しくは、MongoDB 公式 Web サイトを参照してください。
MongoDB のインストール
お使いの OS に MongoDB をインストールするには、MongoDB ダウンロードセンターを参照してください。
MongoDB と RDBMS の比較
|
MongoDB |
---|---|
データベース |
データベース |
テーブル |
コレクション |
タプル/行 |
ドキュメント |
列 |
フィールド |
テーブル結合 |
埋め込まれたドキュメント |
プライマリキー |
プライマリキー(MongoDB 自体が提供するデフォルトキー _id) |
MongoDB では、ObjectIds またはプライマリキーは、12 バイトの長さ、2 ~ 4 バイトのいくつかのチェーンで構成されます。次の値が、合計 12 バイトの組み合わせを構成します。
- Unix エポックからの秒数を表す 4 バイトの値
- 3 バイトのマシン識別子
- 2 バイトのプロセス ID
- 3 バイトのカウンター(ランダムな値から開始)
cfmongodb パッケージのインストール
Zip インストーラーを使用する場合に限り、Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、MongoDB 用のモジュールはインストールされていません。最初の手順は、ColdFusion の MongoDB パッケージをインストールすることです。GUI インストーラーの場合、便宜上、このモジュールは事前にインストールされています。
注意:GUI インストーラーを使用する場合、これらのパッケージは事前にインストールされています。
MongoDB のパッケージは、cfmongodb と呼ばれます。
パッケージ cfmongodb をインストールするには、次の手順に従います。
- <CF_HOME>/cfusion/bin に移動します。
- 次のコマンドを入力します。
- Windows:cfpm.bat
- Linux:cfpm.sh
- コマンド install cfmongodb を入力します。
MongoDB パッケージがインストールされるまで待ちます。
ColdFusion Administrator からのインストール
- ColdFusion Administrator/パッケージマネージャーで、「使用可能なパッケージ」セクションを展開します。
- パッケージのリストから、cfmongodb を選択します。
- 「インストール」をクリックします。
ColdFusion との統合
Application.cfc の datasources プロパティで、次に示すように、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>
capped を true に設定する場合、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 struct と projection の 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) // Returns documents that match the criteria </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) // Returns documents that match the criteria </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 メソッド
<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 ではサポートされていません。