FireDAC.Phys.MongoDBWrapper.TMongoCollection

提供: RAD Studio API Documentation
移動先: 案内検索

FireDAC.Phys.MongoDBWrapper.TMongoObjectSystem.TObjectTMongoCollection

Delphi

TMongoCollection = class(TMongoObject)

C++

class PASCALIMPLEMENTATION TMongoCollection : public TMongoObject

プロパティ

種類 可視性 ソース ユニット
class public
FireDAC.Phys.MongoDBWrapper.pas
FireDAC.Phys.MongoDBWrapper.hpp
FireDAC.Phys.MongoDBWrapper FireDAC.Phys.MongoDBWrapper


説明

MongoDB コレクションを表します。

TMongoCollection は、MongoDB の mongoc_collection_t 構造体をカプセル化したものです。

TMongoCollection のインスタンスを直接作成することはできません。代わりに、TMongoConnection および TMongoDatabase の次のメンバのいずれかを使用する必要があります。

TMongoCollection には、コレクションに関する基礎データにアクセスするための次の読み取り専用プロパティが用意されています。

次のメンバを使用すると、コレクションのデータをクエリすることができます。

コレクションのデータを編集するには、次のメンバを使用します。

  • Insert(新規ドキュメントを挿入します)。Insert を呼び出したあと、コレクションの LastID プロパティから、挿入したドキュメントのオブジェクト ID を読み取ることができます。
  • Remove(既存のドキュメントを削除します)。RemoveAll を使用して、コレクションからすべてのドキュメントを削除することもできます。また、Drop を使用して、データベースからコレクションそのものを削除することもできます。
  • Update(既存のドキュメントを修正します)。
  • CreateIndex(コレクションにインデックスを作成します)または DropIndex(コレクションからインデックスを削除します)。
  • Rename(コレクションの名前データベースを変更します)。

InsertRemoveUpdate のいずれかが呼び出されるたびに、TMongoCollection では変更内容をデータベースに送信します。いくつかの変更を実行し、それらの内容を全部一度にデータベースに送信するには、次の手順に従います。

  1. BeginBulk を呼び出して、バルク操作を開始します。
  2. InsertRemoveUpdate のいずれかを必要な回数だけ呼び出して、変更をローカルに実行します。
  3. EndBulk を呼び出して、バルク操作を送信します。

BeginBulk で開始したバルク操作を中止する場合は、CancelBulk を呼び出すことができます。IsBulk の値を読み取って、バルク操作の途中かどうかを判定することができます(途中の場合は True、そうでない場合は False)。

TMongoCollection には、ドキュメントの数を示すさまざまなプロパティが用意されています。つまり、挿入されたドキュメントの数(DocsInserted)、一致したドキュメントの数(DocsMatched)、修正されたドキュメントの数(DocsModified)、削除されたドキュメントの数(DocsRemoved)、更新操作の一環として挿入されたドキュメントの数(DocsUpserted)です。TMongoCollection では、データベースにデータを送信し終わるたびに、これらのプロパティの値を更新します。

コレクションに対してデータベース コマンドを実行するには、次のいずれかのメソッドを使用します。

レプリカ セットの読み書きのセマンティクスを構成するには、次のプロパティを使用します。

一部のメソッドでは 2 種類のコーディング スタイルをサポート

TMongoCollection の一部のメソッドでは、通常のコーディング スタイルとフルーエント(流れるような)コーディング スタイルの 2 種類のコーディング スタイルをサポートしています。そのようなメソッドとしては、AggregateCountFindInsertRemoveUpdate があります。

通常のコーディング スタイルの使用

通常のコーディング スタイルを使用する場合は、TMongoPipeline インスタンスや TMongoQuery インスタンスなどのビルダ オブジェクトを再利用できます。

既に作成し構成してあるビルダ オブジェクトをターゲット メソッドに渡す必要があります。そのメソッドが、指定されたビルダ オブジェクトに基づいて、MongoDB サーバーに要求を送信します。

次の例では、通常のコーディング スタイルを使ってクエリを送信する方法を示しています。

Delphi の場合:

MyQuery := TMongoQuery.Create(MyConnection.Env);
try
  MyQuery.Match
    .Add('cuisine', 'Italian')
    .Add('address.zipcode', '10075');
  MyQuery.Sort
    .Ascending(['name']);
  MyQuery.Limit(3);
  MyCursor := MyCollection.Find(MyQuery);
  // …
finally
  MyQuery.Free;

C++ の場合:

TMongoQuery* MyQuery = new TMongoQuery(MyConnection->Env);
try {
  MyQuery->Match()
    ->Add("cuisine", String("Italian"))
    ->Add("address.zipcode", String("10075"));
  MyQuery->Sort()
    ->Ascending(OPENARRAY((String("name"))));
  MyQuery->Limit(3);
  _di_IMongoCursor MyCursor = MyCollection->Find(MyQuery);
  // …
} __finally {
  delete MyQuery;
}

フルーエント コーディング スタイルの使用

フルーエント コーディング スタイルを使用する場合は、コードの可読性を高めることができます。

ターゲット メソッドはビルダ オブジェクトを返します。メソッド連鎖を使って、返されたビルダ オブジェクトにデータを格納し MongoDB サーバーに要求を送信することができます。

要求の送信に使用するメソッドは、ビルダ オブジェクトの取得に使用するメソッドによって決まります(下表を参照)。

TMongoCollection のメソッド ビルダ オブジェクトのメソッド
Aggregate TMongoPipeline.Open
Count TMongoQuery.Value
Find TMongoQuery.Open
Insert TMongoInsert.Exec
Remove TMongoSelector.Exec
Update TMongoUpdate.Exec
メモ: Delphi では、TMongoPipeline.OpenTMongoQuery.Open の呼び出しを省略して、代わりに、お使いのビルダ オブジェクトを IMongoCursor にキャストすることができます。以下の例を参照してください。

次の例では、フルーエント コーディング スタイルを使ってクエリを送信する方法を示しています。

Delphi の場合:

MyCursor := MyCollection.Find
  .Match
    .Add('cuisine', 'Italian')
    .Add('address.zipcode', '10075')
  .&End
  .Sort
    .Ascending(['name'])
  .&End
  .Limit(3);

C++ の場合:

_di_IMongoCursor MyCursor = MyCollection->Find()
  ->Match()
    ->Add("cuisine", String("Italian"))
    ->Add("address.zipcode", String("10075"))
  ->End()
  ->Sort()
    ->Ascending(OPENARRAY((String("name"))))
  ->End()
  ->Limit(3)
  ->Open();