所有例子来自:https://github.com/stijnsanders/TMongoWire

Delphi MongoDB的驱动

一个Delphi的驱动程序来访问mongoDB的服务器。用jsonDoc.pas来存储JSON文档。ijsondocument将变量类型映射Delphi的多种变量,类似于 松散型的JavaScript。 主要有三个单位和两大类能够访问一个Mongo DB:

jsonDoc.pas

IJSONDocument

1)function JSON:IJSONDocument; //overload; //创建一个新的IJSONDocument实例:

 例子: d:=JSON;

2)function JSON(const x:array of Variant):IJSONDocument; //overload;//创建并填充一个新的IJSONDocument实例:

传递一个交替键和值的列表,
d:=JSON(['a',1,'b{','x','foo','}','c{','x','bar','}','d',VarArrayOf([JSON(['x','hello']),JSON(['y','world'])]),'e',true]);
{"a":1,"b":{"x":"foo"},"c":{"x":"bar"},"d":[{"x":"hello"},{"x":"world"}],"e":true}.
例子:

  d:=JSON([
    '_id',ListView1.Selected.SubItems[siiID],
    'name',ItemForm.txtName.Text,
    'address',ItemForm.txtAddress.Text,
    'phone',ItemForm.txtPhone.Text
    ]);

3)function JSON(const x: Variant): IJSONDocument; overload;//将一个变量转换成一个IJSONDocument引用。

例子:  dSelector:=JSON(['_id',ListView1.Selected.SubItems[siiID]]);

取决于论证的价值:

Null(或空或未赋值)返回nil,

将字符串类型解析为一个新的IJSONDocument实例

在所有其他情况下,该变量都被探测,以引用一个IJSONDocument instace。

4)     function ToString: WideString; stdcall;:展示出json数据

例子

mongoWire.pas

利用一个对象TMongoWire连接到MongoDB服务器。它支持获取单个项,执行插入、更新和删除。
利用一个类对象TMongoWireQuery 来查询mongoDB 服务器。它在需要时处理游标和服务器的后续请求,以获得更多的数据。

1)TMongoWire

方法

1)constructor TMongoWire.Create(const NameSpace: WideString);//创建

例子:

  procedure TMainForm.FormCreate(Sender: TObject);
  begin
    FMongoWire:=TMongoWire.Create(mwx1NameSpace);//mwx1NameSpace  数据库名
  end;

2)procedure TMongoWire.Open(const ServerName: string; Port: integer);//与mongoDB数据库连接

 例子:1)FMongoWire.Open(AnsiString(ConnectionForm.txtHost.Text),StrToInt(ConnectionForm.txtPort.Text))

    2)FDB.Open('192.168.0.68',27017);

3)procedure TMongoWire.Insert(const Collection: WideString;const Doc: IJSONDocument);

4)procedure TMongoWire.Insert(const Collection: WideString;const Docs: array of IJSONDocument);

3)procedure TMongoWire.Insert(const Collection: WideString;const Docs: IJSONDocArray);//增加

例子:FMongoWire.Insert(mwx1Collection,d);

4)function TMongoWire.Get(const Collection: WideString; const QryObj,ReturnFieldSelector: IJSONDocument): IJSONDocument;//获取单条

例子: d:=FMongoWire.Get(mwx1Collection,dSelector);

5)procedure TMongoWire.Update(const Collection: WideString; const Selector,Doc: IJSONDocument; Upsert, MultiUpdate: oolean);//更新

例子:   FMongoWire.Update(mwx1Collection,dSelector,d);

6)procedure TMongoWire.Delete(const Collection: WideString;const Selector: IJSONDocument; SingleRemove: boolean);

例子:FMongoWire.Delete(mwx1Collection,JSON(['_id',ListView1.Selected.SubItems[siiID]]));

2)TMongoWireQuery

方法

1)constructor TMongoWireQuery.Create(MongoWire: TMongoWire);//创建

例子:    q:=TMongoWireQuery.Create(FMongoWire);)

2)procedure TMongoWireQuery.Query(const Collection: WideString; const QryObj,ReturnFieldSelector: IJSONDocument; Flags: integer);//查询

例子:q.Query(mwx1Collection,nil);//查询集合中所有文档(数据)

3)function TMongoWireQuery.Next(const Doc: IJSONDocument): boolean;//下一条

例子:q.Next(d)

MongoStream

使用TMongoStream 来加载和存储文件。在内部.files和.chunks集合用于存储数据。

方法

1)constructor TMongoStream.Create(db: TMongoWire; const prefix: WideString;const filequery: IJSONDocument);

例子: m:=TMongoStream.Create(FDB,FilesCollection,li.SubItems[siID]);

2)class function TMongoStream.Add(db: TMongoWire; prefix: WideString;stream: TStream; const info: IJSONDocument): Variant;//添加上传文档信息

例子:

id:=TMongoStream.Add(FDB,FilesCollection,f,JSON([
'name',fn,
'contentType',contentType,
'created',VarFromDateTime(Now)
//more?
]));//将json数据添加到数据库里,返回mongoObjectId

3)class function TMongoStream.Add(db: TMongoWire; const prefix,filepath: WideString): Variant;

4)procedure TMongoStream.SaveToFile(const FileName: string);//另保存文件信息(下载)

二、实例

最新文章

  1. Android 5.X新特性之为RecyclerView添加HeaderView和FooterView
  2. 微博轻量级RPC框架Motan
  3. [译]App Framework 2.1 (1)之 Quickstart
  4. IIS8的证书设置
  5. Android开发环境
  6. POJ 2528 Mayor's posters (线段树)
  7. xinetd
  8. Linux聊天室项目 -- ChatRome(select实现)
  9. request请求对象实例
  10. OS X 10.10 apache配置
  11. sql server2008报“评估已过期....."
  12. Install cv2.so for Anaconda
  13. PeopleCode事件和方法只用于online界面不能用于组件接口(component interface)
  14. codefoces384A-Mafia心得
  15. 彻底理解了call()方法,apply()方法和bind()方法
  16. 《转》Xcode 6 正式版如何创建一个Empty Application
  17. SogouCloud.exe进程导致SQL Server服务无法启动
  18. css引入外部字体使网站字体更美观
  19. python中a,b=b,a原理
  20. uva 10625 Board Wrapping

热门文章

  1. EF(EntityFramework) Migrations 迁移
  2. 在CentOS7系统上执行Scala脚本
  3. 2.Stacks(堆栈)
  4. Jquery学习笔记(3)--注册验证
  5. spring-webservice.xml
  6. golang模板语法简明教程
  7. oracle 存储过程中使用date 时、分、秒丢失
  8. pl/sql 实例解析 01
  9. tuning 03 Sizing the Share pool
  10. 目标跟踪之卡尔曼滤波---理解Kalman滤波的使用预测