Skip to content

MongoDB Reader

MongoDBReader 插件利用 MongoDB 的java客户端MongoClient进行MongoDB的读操作。

配置样例

该示例从MongoDB中读一张表并打印到终端

json
{
  "job": {
    "setting": {
      "speed": {
        "channel": 1,
        "bytes": -1
      }
    },
    "content": {
      "reader": {
        "name": "mongodbreader",
        "parameter": {
          "username": "",
          "password": "",
          "column": [
            "unique_id",
            "sid",
            "user_id",
            "auction_id",
            "content_type",
            "pool_type",
            "frontcat_id",
            "catagoryid",
            "gmt_create",
            "taglist",
            "property",
            "scorea",
            "scoreb",
            "scorec"
          ],
          "connection": {
            "address": [
              "127.0.0.1:27017"
            ],
            "database": "tag_per_data",
            "collection": "tag_data",
            "authDb": "admin"
          }
        }
      },
      "writer": {
        "name": "streamwriter",
        "parameter": {
          "print": "true"
        }
      }
    }
  }
}

参数说明

配置项是否必须类型默认值描述
addresslistMongoDB 的数据地址信息, 可写多个
usernamestringMongoDB 用户名
passwordstringMongoDB 密码
databasestringMongoDB 数据库
collectionstringMongoDB 的集合名
columnlistMongoDB 的文档列名, 配置 ["*"] 获取所有列
querystring自定义查询条件
fetchSizeint2048批量获取的记录数

collection

这里的 collection 目前只支持单一 collection,因此设置类型为字符串,而不是其他插件常见的数组类型,这一点尤为注意。

column

column 用来指定需要读取的字段名称,这里我们做了字段名称的组成两个假定:

  • 不可能用单引号开头(')
  • 不可能全部由数字和点(.) 组成

基于以上假定,我们可以在简化 column 配置的同时,还可以指定一些常量作为补充字段,比如一般采集一张表,我们需要增加采集时间,采集源等常量,那么可以这样配置

json
{
  "column": ["col1", "col2", "col3", "'source_mongodb'", "20211026", "123.12"]
}

上述配置的后三个字段就是常量,分别当作字符类型,整型和浮点型处理。

如果字段是嵌入式的,可以用点(.)来表示层级关系,比如:

json
{
  "column": ["col1", "col2", "col3.subcol1", "col3.subcol2"]
}

query

query 是只符合 MongoDB 查询格式的 BSON 字符串,比如:

json
{
  "query": "{amount: {$gt: 140900}, oc_date: {$gt: 20190110}}"
}

上述查询类似 SQL 中的 where amount > 140900 and oc_date > 20190110

类型转换

Addax 内部类型MongoDB 数据类型
Longint, Long
Doubledouble
Stringstring, array
Datedate
Booleanboolean
Bytesbytes