MongoDB

DolphinDB mongodb插件可以建立与mongodb服务器的连接,然后导入数据到DolphinDB的内存表中。

mongodb插件目前支持版本:relsease200, release130, release120。

在插件市场安装插件

版本要求

  • DolphinDB Server: 2.00.10及更高版本

安装步骤

  1. 在DolphinDB 客户端中使用 listRemotePlugins 命令查看插件仓库中的插件信息。

    login("admin", "123456")
    listRemotePlugins()
  2. 使用 installPlugin 命令完成插件安装。

    installPlugin("mongodb")
  3. 使用 loadPlugin 命令加载插件。

    loadPlugin("mongodb")

接口说明

mongodb::connect

语法

mongodb::connect(host, port, user, password, [db])

参数

  • host:MongoDB服务器的地址,类型为string。
  • port:MongoDB服务器的端口,类型为int。
  • user:MongoDB服务器的用户名,类型为string。如果没有开启mongodb用户权限认证,则填写空字符串""。
  • password:MongoDB服务器的密码,类型为string。如果没有开启mongodb用户权限认证,则填写空字符串""。
  • db:验证登录用户的数据库,类型为string。在mongodb中存储对应登录用户的数据库。如果不填写,将以参数host指定的mongodb服务器的admin数据库进行登录用户验证。

详情

与MongoDB服务器建立一个连接。返回一个MongoDB连接的句柄,用于load。

例子

conn = mongodb::connect(`localhost, 27017, `root, `root, `DolphinDB)
conn2 = mongodb::connect(`localhost, 27017, `root, `root)

mongodb::load

语法

mongodb::load(connection, collcetionName, query, option, [schema])

参数

  • connection:通过mongodb::connect获得的MongoDB连接句柄。
  • collcetionName:一个MongoDB中集合的名字。有两种参数模式( collectionNamedatabaseName:collectionName ),第一种会查询在调用mongodb::connect时指定的数据库db,第二种是查询指定database中的collection。
  • query:MongoDB查询条件,JSON字符串,类似:{ "aa" : { "$numberInt" : "13232" } }, { "datetime" : { "$gt" : {"$date":"2019-02-28T00:00:00.000Z" }} }。
  • option:MongoDB查询选项,JSON字符串,类似:{"limit":123}对查询结果在MongoDB中进行预处理再返回。
  • schema:包含列名和列的数据类型的表。如果我们想要改变由系统自动决定的列的数据类型,需要在schema表中修改数据类型,并且把它作为load函数的一个参数。

详情

将MongoDB的查询结果导入DolphinDB中的内存表。支持的数据类型以及数据转化规则参见用户手册数据类型章节。

例子

conn = mongodb::connect(`localhost, 27017, `root, `root, `DolphinDB)
query='{ "datetime" : { "$gt" : {"$date":"2019-02-28T00:00:00.000Z" }} }'
option='{"limit":1234}'
tb=mongodb::load(conn, `US,query,option)
select count(*) from tb
tb2 = mongodb::load(conn, 'dolphindb:US',query,option)
select count(*) from tb
schema=table(`item`type`qty as name,`STRING`STRING`INT as type)
tb2 = mongodb::load(conn, 'dolphindb:US',query,option,schema)

mongodb::aggregate

语法

mongodb::aggregate(connection, collcetionName, pipeline, option, [schema])

参数

  • connection:通过mongodb::connect获得的MongoDB连接句柄。
  • collcetionName:一个MongoDB中集合的名字。有两种参数模式( collectionNamedatabaseName:collectionName ),第一种会查询在调用mongodb::connect时指定的数据库db,第二种是查询指定database中的collection。
  • pipeline:MongoDB聚合管道,JSON字符串,类似:{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}。
  • option:MongoDB查询选项,JSON字符串,类似:{"limit":123}对查询结果在MongoDB中进行预处理再返回。
  • schema:包含列名和列的数据类型的表。如果我们想要改变由系统自动决定的列的数据类型,需要在schema表中修改数据类型,并且把它作为load函数的一个参数。

详情

将MongoDB的(聚合)查询结果导入DolphinDB中的内存表。支持的数据类型以及数据转化规则参见用户手册数据类型章节。

例子

conn = mongodb::connect(`localhost, 27017, "", "", `DolphinDB)
pipeline = "{ \"pipeline\" : [ { \"$project\" : { \"str\" : \"$obj1.str\" } } ] }"
option="{}"
mongodb::aggregate(conn, "test1:collnetion1",pipeline,option)

mongodb::close

语法

mongodb::close(connection)

参数

  • connection:通过mongodb::connect获得的MongoDB连接句柄。

详情

关闭一个MongoDB连接句柄。

例子

conn = mongodb::connect(`localhost, 27017, `root, `root, `DolphinDB)
query=`{ "datetime" : { "$gt" : {"$date":"2019-02-28T00:00:00.000Z" }} }
option=`{"limit":1234}
tb = mongodb::load(conn, `US,query,option)
select count(*) from tb
mongodb::close(conn)

mongodb::parseJson

语法

mongodb::parseJson(str, keys, colnames, colTypes)

详情

解析JSON类型的数据,转换到DolphinDB的内存表并返回该内存表。

参数

  • str: 需要解析的JSON格式的字符串,为string类型的vector。
  • keys: 转换后内存表的列名,一一对应原 JSON 中的键,为string类型的vector。
  • colnames: 结果表JSON的键,为string类型的vector。
  • colTypes: 向量,表示结果表中的数据类型。
    • colTypes支持BOOL, INT, FLOAT, DOUBLE, STRING以及BOOL[], INT[], FLOAT[], DOUBLE[]类型的array vector。其中支持将JSON中的int, float, double类型转换为DolphinDB INT, FLOAT, DOUBLE类型中的的任意一种。

例子

data = ['{"a": 1, "b": 2}', '{"a": 2, "b": 3}']
 mongodb::parseJson(data, 
`a`b, 
`col1`col2,
[INT, INT] )

mongodb::getCollections

语法

mongodb::getCollections([databaseName])

参数

  • databaseName: 需要查询的数据库。如果不填,则为mongodb::connect所选的database。

详情

获取指定database的所有集合的名字。

例子

conn = mongodb::connect("192.168.1.38", 27017, "", "")
mongodb::getCollections(conn, "dolphindb")

查询数据示例

query='{"dt": { "$date" : "2016-06-22T00:00:00.000Z" } }';
query='{"bcol" : false }';
query='{"open" : { "$numberInt" : "13232" } }';
query='{"vol" : { "$numberLong" : "1242434"} }';
query=' {"close" : { "$numberDouble" : "1.2199999999999999734" }';
query='{"low" : { "$gt" : { "$numberDecimal" : "0.219711" } } }';
query='{"uid" : { "$oid" : "1232430aa00000000000be0a" } }';
query=' {"sid" : { "$symbol" : "fdf" } }';
query='{"symbol" : "XRPUSDT.BNC"}';
query='{"ts" : { "$date" : { "$numberLong" : "1600166651000" } }';
query='{}';
option='{}';
con=mongodb::connect(`localhost,27017,`admin,`123456,`dolphindb);
res=mongodb::load(con,`collection1,query,option);
mongodb::close(con);
t = select * from res

支持的数据类型

整型

MongoDB类型对应的DolphinDB类型
int32INT
int64(long)LONG
boolBOOL

DolphinDB中各类整型的最小值(例如:INT的-2,147,483,648以及LONG的-9,223,372,036,854,775,808)为NULL值。

浮点数类型

MongoDB类型对应的DolphinDB类型
doubleDOUBLE
decimal128DOUBLE

时间类型

MongoDB类型对应的DolphinDB类型
datetimestamp

字符串类型

MongoDB类型对应的DolphinDB类型
stringSTRING
symbolSTRING
oidSTRING