![[صورة: MongoDB.png]](https://github.com/grijjy/DelphiMongoDB/raw/master/MongoDB.png)
توجد مكتبات كثيرة للتعامل مع هذا النوع من قواعد البيانات بشكل يدوي وليس ربط بالمكونات كما اوضحت ببداية المنشور
على سبيل المثال لا الحصر هذه مكتبة
https://github.com/grijjy/DelphiMongoDB
للاتصال بقاعدة البيانات
كود :
var
Client: IgoMongoClient;
Database: IgoMongoDatabase;
Collection: IgoMongoCollection;
begin
Client := TgoMongoClient.Create('localhost');
Database := Client.GetDatabase('test');
Collection := Database.GetCollection('restaurants');
end;لاضافة مستند او سجل
كود :
var
Line: String;
Doc: TgoBsonDocument;
DataSet: TList<TgoBsonDocument>;
Collection: IgoMongoCollection;
begin
..Initialization of Stream, Dataset and Collection not shown here..
Reader := TStreamReader.Create(Stream, TEncoding.UTF8);
while (not Reader.EndOfStream) do
begin
Line := Reader.ReadLine;
Doc := TgoBsonDocument.Parse(Line);
Dataset.Add(Doc);
end;
Collection.InsertMany(Dataset);
end;لاضافة مستند او سجل بشكل يدوي
كود :
procedure TTestInsertPrimer.InsertADocument;
var
Doc: TgoBsonDocument;
Collection: IgoMongoCollection;
begin
Doc := TgoBsonDocument.Create()
.Add('address', TgoBsonDocument.Create()
.Add('street', '2 Avenue')
.Add('zipcode', '10075')
.Add('building', '1480')
.Add('coord', TgoBsonArray.Create([73.9557413, 40.7720266])))
.Add('borough', 'Manhattan')
.Add('cuisine', 'Italian')
.Add('grades', TgoBsonArray.Create([
TgoBsonDocument.Create()
.Add('date', EncodeDateTime(2014, 10, 1, 0, 0, 0, 0))
.Add('grade', 'A')
.Add('score', 11),
TgoBsonDocument.Create()
.Add('date', EncodeDateTime(2014, 1, 6, 0, 0, 0, 0))
.Add('grade', 'B')
.Add('score', 17)]))
.Add('name', 'Vella')
.Add('restaurant_id', '941704620');
Collection := Database.GetCollection('restaurants');
Collection.InsertOne(Doc);
end;للاستعلام عن سجل او مستند
كود :
procedure TTestQueryPrimer.QueryAll;
var
Collection: IgoMongoCollection;
Count: Integer;
Doc: TgoBsonDocument;
begin
Collection := Database.GetCollection('restaurants');
Count := 0;
for Doc in Collection.Find() do
Inc(Count);
Assert.AreEqual(25359, Count);
end;فلترة البيانات
كود :
procedure TTestQueryPrimer.QueryTopLevelField;
begin
...
for Doc in Collection.Find(TgoMongoFilter.Eq('borough', 'Manhattan')) do
Inc(Count);
Assert.AreEqual(10259, Count);
end;كود :
procedure TTestQueryPrimer.LogicalAnd;
begin
...
for Doc in Collection.Find(
TgoMongoFilter.Eq('cuisine', 'Italian') and
TgoMongoFilter.Eq('address.zipcode', '10075')
) do
Inc(Count);
Assert.AreEqual(15, Count);
end;ترتيب البيانات
كود :
for Doc in Collection.Find(
TgoMongoFilter.Empty,
TgoMongoSort.Ascending('borough') +
TgoMongoSort.Ascending('address.zipcode'))
doحذف البيانات
كود :
procedure TTestRemovePrimer.RemoveMatchingDocuments;
var
Collection: IgoMongoCollection;
Count: Integer;
begin
Collection := Database.GetCollection('restaurants');
Count := Collection.DeleteMany(TgoMongoFilter.Eq('borough', 'Manhattan'));
Assert.AreEqual(10259, Count);
end;تحديث بيانات
كود :
Collection.UpdateOne(
TgoMongoFilter.Eq('restaurant_id', '41156888'),
TgoMongoUpdate.Init
.&Set('address.street', 'East 31st Street')
.CurrentDate('lastModified));يوجد ايضا مكونات اخرى ولكل مكتبة اسلوب وطريقة يبقى الاختيار على المستخدم لاختيار الانسب
MongoEngine
MongoKit
MongoKat
Monary
Django-mongonaut
TxMongo
yunnet
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)