delphi xe----操作mongoDB驱动,TMongoWire(Delphi MongoDB Driver)
所有例子来自: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);//另保存文件信息(下载)
二、实例
delphi xe----操作mongoDB驱动,TMongoWire(Delphi MongoDB Driver)的更多相关文章
- [转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装
一.下载 官方下载网址: http://www.axolot.com/components/download.htm 从这里可以下载到从Delphi5到DelphiXE全部支持的版本. 二.软件安装 ...
- DELPHI XE MYSQL数据库操作类 MYSQLHELPER
注: 无需odbc配置 {* * MySQL Helper v1.0 * 2015.6.19 * 说明: * 这是一个操作MySQL的类,该类必须和libmysql.dll,dbxmys.dll两个文 ...
- delphi xe 10.3 利用Git组群开发,Git服务器安装,Git 拉取,提交,推送相关设置操作
1. Git服务器安装, 参考 https://blog.csdn.net/u012842630/article/details/97175397 Git服务器官方网站,要FQ. 2. 工具软件 gi ...
- MongoDB 驱动以及分布式集群读取优先级设置
本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上:同时简单介绍Python驱动.Node.js驱动.Mongoose驱动如何使用读取优先级和 ...
- Java的MongoDB驱动及读写策略
网上看见一篇博文,详细讲了MongoDB读写策略,将来生产会遇到类似的问题,转来备查. 指定新mongo实例: Mongo m = new Mongo(); Mongo m = new Mongo( ...
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Delphi XE 10 跨平台三层数据库应用教程
Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD ...
- Delphi XE Starter Essentials 中文目录
Table of Contents1. Delphi XE Starter IDE 1Delphi and C++Builder ................................... ...
- 技术讨论]mongodb驱动的正确使用方法
原文地址:http://cnodejs.org/topic/5190d61263e9f8a542acd83b mongo数据库在nodejs平台有2个常用驱动,mongodb和mongoose,mon ...
随机推荐
- 自己动手写CPU之第五阶段(2)——OpenMIPS对数据相关问题的解决措施
将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第16篇.我尽量每周四篇 5.2 OpenMIPS对数据相关问题的解决措施 OpenMIPS处理器採用数据前推的方法来解决流水 ...
- python--getattr函数
getattr函数原型 getattr(object, name[, default]) -> value getattr是功能就是获取object对象的name属性的值(object.name ...
- [svc][jk]监控jvm的一个坑
监控jvm的一个坑 1,遇到的问题 我按照以往文档,在catalina.sh里追加jvm的监控api,如下 紧接着我启动 tomcat. 未报任何错误. 发现 lsof –i:12000, 12000 ...
- [gj]来公司停电了-维护机器
停电出现的问题 一早来机房跳闸了. 很多vm手动起来后有些服务不太正常了. 机房锁坏了.不知道谁进去干啥了.导致跳闸 闸门不知道在哪里.导致所有机器停电了 牵扯到的技术点: 1,nexus启动. ng ...
- RCU
RCU(read-copy-update)同步机制.R(Read):读者不需要获得任何锁就可访问RCU保护的临界区:C(Copy):写者在访问临界区时,写者“自己”将先拷贝一个临界区副本,然后对副本进 ...
- python学习之count()
定义: count()方法用于统计对象中,某个字符出现的次数 语法: str.count(sub, start= ,end=len(string)) sub:搜索的对象 start和end:搜索的范围 ...
- Linux之手动设置IP地址
一.引言 有时候我们装好了机器却发现网络没有设置,而服务器的机器一般都是没有界面的,那么该如何设置IP呢? 二.步骤 root用户,#vi /etc/sysconfig/network-scripts ...
- jquery远程引用地址大全
jquery官方的引用地址,如图: <script typet="text/javascript" src="http://code.jquery.com/jque ...
- hbase java Api练习
package cn.itcast_01_hbase; import java.util.ArrayList; import java.util.List; import org.apache.had ...
- SQL Server DTS向导,字段转换出现202和200错误
当使用SQL Server 2012的DTS向导(Import and Export Data/导入导出数据)时,会出现如下问题: 当来源数据直接使用表的时候,没有任何问题 但如果来源数据是查询时,就 ...