跳转至

MongoDB Reader

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

配置样例

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

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

参数说明

配置项 是否必须 类型 默认值 描述
address list MongoDB 的数据地址信息, 可写多个
username string MongoDB 用户名
password string MongoDB 密码
database string MongoDB 数据库
collection string MongoDB 的集合名
column list MongoDB 的文档列名,不支持 ["*"] 获取所有列方式
query string 自定义查询条件
fetchSize int 2048 批量获取的记录数

collection

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

column

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

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

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

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

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

query

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

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

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

类型转换

Addax 内部类型 MongoDB 数据类型
Long int, Long
Double double
String string, array
Date date
Boolean boolean
Bytes bytes