2

MongoDB的外部数据包装器非常棒!我已经使用这些说明让它工作了,除了:

  • 一个包含动态字段的对象 - 使用哪种 PostgreSQL 类型?

    {“key1”:一些,...}

  • 对象数组 - 使用哪种 PostgreSQL 类型?数组的长度可能不同,但对象的内部结构是一致的。

    [ { "a": 1 }, { "a": 2 }, { "a": 3 } ]

我在最近的 PostgreSQL 版本中找到了有关 JSON 功能的这些幻灯片。整洁的。但是BSONJSONJSONB似乎不被 FDW 识别为 SQL 数据类型。

如果我使用:

  CREATE FOREIGN TABLE t6
  (
      "aaa.bbb" JSON    -- 'bbb' is an array of JSON objects
  )
  SERVER mongo_server OPTIONS(...);

  SELECT "aaa.bbb" AS bbb FROM t6;

我得到:

  psql:6.sql:152: ERROR:  cannot convert bson type to column type
HINT:  Column type: 114

正常类型TEXTFLOAT工作。

4

1 回答 1

1

正如@pozs 所指出的, EnterpriseDB fork可以做到这一点。只需将您的数据标记为JSON类型。

但是,构建系统对我来说相当奇怪,并且并没有真正为您提供缺少构建组件的正确错误(它显然是基于 Linux 的,并且只是希望您拥有一堆工具而没有正确检查它们)。

这是我设法在 OS X + Homebrew上构建它的方法:

$ brew install libtool libbson autoconf automake
$ ./autogen.sh --with-legacy

请注意,该--with-meta变体不提供JSON 支持,这就是我选择这个 fork 的原因。

参考。https://github.com/EnterpriseDB/mongo_fdw/issues/20

于 2015-02-10T15:43:58.430 回答