所有例子来自: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实例:

  1. 传递一个交替键和值的列表,
    d:=JSON(['a',1,'b{','x','foo','}','c{','x','bar','}','d',VarArrayOf([JSON(['x','hello']),JSON(['y','world'])]),'e',true]);
  2.  
  3. {"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);//另保存文件信息(下载)

二、实例

delphi xe----操作mongoDB驱动,TMongoWire(Delphi MongoDB Driver)的更多相关文章

  1. [转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装

    一.下载 官方下载网址: http://www.axolot.com/components/download.htm 从这里可以下载到从Delphi5到DelphiXE全部支持的版本. 二.软件安装 ...

  2. DELPHI XE MYSQL数据库操作类 MYSQLHELPER

    注: 无需odbc配置 {* * MySQL Helper v1.0 * 2015.6.19 * 说明: * 这是一个操作MySQL的类,该类必须和libmysql.dll,dbxmys.dll两个文 ...

  3. delphi xe 10.3 利用Git组群开发,Git服务器安装,Git 拉取,提交,推送相关设置操作

    1. Git服务器安装, 参考 https://blog.csdn.net/u012842630/article/details/97175397 Git服务器官方网站,要FQ. 2. 工具软件 gi ...

  4. MongoDB 驱动以及分布式集群读取优先级设置

    本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上:同时简单介绍Python驱动.Node.js驱动.Mongoose驱动如何使用读取优先级和 ...

  5. Java的MongoDB驱动及读写策略

    网上看见一篇博文,详细讲了MongoDB读写策略,将来生产会遇到类似的问题,转来备查. 指定新mongo实例: Mongo m = new Mongo(); Mongo m = new Mongo( ...

  6. Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)

    Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...

  7. Delphi XE 10 跨平台三层数据库应用教程

    Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD ...

  8. Delphi XE Starter Essentials 中文目录

    Table of Contents1. Delphi XE Starter IDE 1Delphi and C++Builder ................................... ...

  9. 技术讨论]mongodb驱动的正确使用方法

    原文地址:http://cnodejs.org/topic/5190d61263e9f8a542acd83b mongo数据库在nodejs平台有2个常用驱动,mongodb和mongoose,mon ...

随机推荐

  1. (转)No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VA 解决办法

    c3dEngine在iphone6模拟器下运行报错No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, V ...

  2. thinkphp验证码出不来

    import("ORG.Util.Image"); //图像操作类库 ob_end_clean(); $type = isset($_GET['type'])?$_GET['typ ...

  3. shader 编程入门(一)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

  4. ajax发送请求时为url添加参数(使用函数)

    <script> // ajax的get请求,使用函数向其url添加参数 function addURLParam(url,name,value){ url+=(url.indexOf(' ...

  5. PyCharm Python迁移项目

    把整个项目文件迁移过去后,执行文件会报不能执行XX,系统找不到指定的文件. 此时把当前的这个文件名字改一下,再运行,修改提示的错误.等错误全部修改,可以正常运行后,再把文件名改回去

  6. Highcharts 图表js框架

    纯js图表框架 ,图表传入Json数据 设置等等   , 如没特定要求可以考虑使用   优点 : 减轻服务器脚本运行负重  ,纯js执行,特效   缺点: 已知兼容性不高 帮助地址: http://w ...

  7. uinty实现玩家尾随鼠标位置平滑旋转角度

    首先我们要在场景中加入一个quad平面作为地板, 然后指定Layer为Floor,然后移除mesh renderer组件 然后加入脚本 脚本主要思想是从屏幕中心投出一条射线到地板, 然后获取相应坐标, ...

  8. 让一个 csproj 项目指定多个开发框架[转]

    原贴:https://walterlv.gitee.io/post/configure-projects-to-target-multiple-platforms.html 可移植类库.共享项目..N ...

  9. 如何使用NFS

    这两个网卡之间可以通信的,如图所示 也可以写成具体的ip地址,或者ip地址段例如192.168.1.2-200 注意看下面这幅图,路径一定要写完整 下面开始挂载共享的目录 挂载之后什么都没有出现说明挂 ...

  10. Softmatic ScreenLayers 将截图存为psd格式

    Softmatic ScreenLayers 是 Mac 上的一款截图软件,它与众不同的地方是可以将截取的屏幕图片按PSD格式保存到本地,并且图片里的每一种元素都被单独放入一个独立的layer,比如M ...