FireDAC.Phys.MongoDBWrapper.TMongoCollection.BeginBulk
Delphi
procedure BeginBulk(AOrdered: Boolean = True);
C++
void __fastcall BeginBulk(bool AOrdered = true);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | FireDAC.Phys.MongoDBWrapper.pas FireDAC.Phys.MongoDBWrapper.hpp |
FireDAC.Phys.MongoDBWrapper | TMongoCollection |
説明
コレクションに対してバルク操作を開始します。
BeginBulk の呼び出し後、Insert、Update、Remove のいずれかを必要な回数だけ呼び出して、コレクションに適用する変更内容を定義します。バルク操作の間、これらのメソッド呼び出しでは実際のデータベースにどのような変更内容も送信せず、目的とする変更内容をメモリに記録するだけです。
目的とする変更をすべてメモリ内で適用したら、EndBulk を呼び出して、変更内容をデータベースに送信します。これでバルク操作が終了します。新しいバルク操作を開始するには、BeginBulk を再度呼び出す必要があります。
変更内容をデータベースに送信せずにバルク操作を中止するには、CancelBulk を呼び出します。
いつでも IsBulk の値を読み取って、バルク操作の途中かどうかを判定することができます(途中の場合は True
、そうでない場合は False
)。
例
次の例では、"La Bella Italia" という名前のレストランをコレクションから削除し、その名前の新しいレストランをコレクションに追加しています。
MongDB シェルの場合:
var bulk = db.restaurants.initializeOrderedBulkOp();
bulk.find({ name: "La Bella Italia" }).remove()
bulk.insert({
"name": "La Bella Italia",
"cuisine": "Italian",
"grades": [
{
"date": ISODate("2015-11-02T14:38:00Z"),
"grade": "A",
"score": 8
}
]
})
bulk.execute()
Delphi の場合:
MyCollection.BeginBulk;
MyCollection.Remove
.Match
.Add('name', 'La Bella Italia')
.&End
.Exec;
MyDocument := TMongoDocument.Create(MyConnection.Env)
.Add('name', 'La Bella Italia')
.Add('cuisine', 'Italian')
.BeginArray('grades')
.BeginObject('')
.Add('date', ISO8601ToDate('2015-11-02T14:38:00Z'))
.Add('grade', 'A')
.Add('score', 8)
.EndObject
.EndArray;
MyCollection.Insert(MyDocument);
MyDocument.Free;
MyCollection.EndBulk;
C++ の場合:
MyCollection->BeginBulk();
MyCollection->Remove()
->Match()
->Add("name", String("La Bella Italia"))
->End()
->Exec();
TMongoDocument* MyDocument = new TMongoDocument(MyConnection->Env);
MyDocument
->Add("name", String("La Bella Italia"))
->Add("cuisine", String("Italian"))
->BeginArray("grades")
->BeginObject("")
->Add("date", ISO8601ToDate("2015-11-02T14:38:00Z"))
->Add("grade", String("A"))
->Add("score", 8)
->EndObject()
->EndArray();
MyCollection->Insert(MyDocument);
delete MyDocument;
MyCollection->EndBulk();