zoukankan      html  css  js  c++  java
  • pgspider mongodb fdw 查询集成

    前边有简单说过关于mongodb fdw 容器构建的,一些是一些使用上的简单说明

    环境准备

    • docker-compose 文件
    version: "3"
    services: 
      pg-mongo:
        image: dalongrong/pgspider:mongo
        ports:
          - "5432:5432"
        environment:
          - "POSTGRES_PASSWORD:dalong"
      mongo:
        image: mongo
        ports:
          - "27017:27017"
    • 初始化mongodb 数据

      主要包含创建用户以及初始化数据库还有简单的集合数据

    use apps
    db.createCollection("apps")
    db.createUser(  
      {  
        user: "dalong",  
        pwd: "dalong",  
        roles: [{role: "dbAdmin", db: "apps"}],
        mechanisms : ["SCRAM-SHA-1"] 
      }  
    )
     

    demo 数据

    /* 1 */
    {
        "_id" : ObjectId("5e45fbd905d1df732b82b607"),
        "items" : [ 
            1, 
            3, 
            4
        ],
        "userinfo" : {
            "username" : "dalong",
            "userage" : 33
        }
    }
    /* 2 */
    {
        "_id" : ObjectId("5e4601d905d1df732b82b6fa"),
        "items" : [ 
            11, 
            31, 
            41
        ],
        "userinfo" : {
            "username" : "dalong1",
            "userage" : 3
        }
    }
    /* 3 */
    {
        "_id" : ObjectId("5e4601e905d1df732b82b6fe"),
        "items" : [ 
            12, 
            31, 
            41
        ],
        "userinfo" : {
            "username" : "dalong",
            "userage" : 3
        }
    }

    使用扩展

    • 启动服务
    docker-compose up -d
    • 使用扩展
    CREATE EXTENSION mongo_fdw; 
    // 创建server
    CREATE SERVER mongo_server FOREIGN DATA WRAPPER mongo_fdw OPTIONS (address 'mongo', port '27017', authentication_database 'apps');
    // 创建用户映射
    CREATE USER MAPPING FOR postgres SERVER mongo_server OPTIONS(username 'dalong', password 'dalong');
    // 创建外部表方法一,使用table 定义,注意对于嵌套json 对象的支持通过<key>.<filed>" 格式
    CREATE FOREIGN TABLE userapps(_id NAME,items int[],"userinfo.userage" int,"userinfo.username" text) SERVER mongo_server OPTIONS (database 'apps', collection 'myapps');
    // 创建外部表方法二 使用jsonb 格式定义,方便使用json 函数,但是比较json 支持没有sql 功能强大
    CREATE FOREIGN TABLE userapps_json(__doc jsonb) SERVER mongo_server OPTIONS (database 'apps', collection 'myapps');
    // 数据查询
    select * from userapps;
    // 数据查询
    select * from userapps_json;
    // jsonb 格式查询
     SELECT __doc ::jsonb->'userinfo' as usereinfo FROM userapps_json WHERE __doc ::jsonb->'userinfo'->>'username'='dalong';
     

    效果

    参考资料

    https://github.com/EnterpriseDB/mongo_fdw/blob/master/sql/mongo_fdw.sql
    https://www.postgresql.org/docs/11/functions-json.html
    https://github.com/rongfengliang/pgspider-docker
    https://github.com/rongfengliang/pgspider-mongo-fdw-learning
    https://hub.docker.com/repository/docker/dalongrong/pgspider

  • 相关阅读:
    Ruby on Rails Tutorial笔记
    Gollum安装
    适合新手学习的Rails开源项目
    Rails开发网站流程
    解决Rails找不到Javascript的错误
    工具汇总
    BrowserCMS安装
    Head First Html, CSS, Xhtml
    在80端口运行Rails server
    Ubuntu下安装Balsamiq Mockups
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12306655.html
Copyright © 2011-2022 走看看