簡體   English   中英

立方體 Js | 如何連接從 MongoDB 數組創建的兩個表?

[英]Cube Js | How to join two tables created from MongoDB arrays?

我是cube.js 的新手,我遇到了一個問題,也許有人可以幫助我。 我在互聯網上沒有找到任何非常有用的東西......這是我收藏中的 o 文檔示例:

{ 
    "_id" : ObjectId("5a835e0000f73b69c100f15c"), 
    "studyDescription" : "xxxxxxxx", 
    "observations" : [
        {
            "_id" : "1JELIZY6QSAGW",  
            "state" : "validated", 
            "stateBy" : "user@xxx.com", 
            "stateAt" : ISODate("2019-10-22T15:06:48.133+0000"), 
            "created" : ISODate("2019-10-22T15:06:48.133+0000"), 
            "createdBy" : "user@xxx.com", 
            "history" : [
                {
                    "author" : "user@xxx.com", 
                    "role" : "ADMIN", 
                    "state" : "validated", 
                    "tsp" : ISODate("2019-10-22T15:06:48.133+0000")
                }
            ]
        }
    ]
}

我的收藏包含研究,每項研究都包含幾個觀察結果。 每個觀察都可以由一個或多個審閱者審閱,並且此信息包含在“歷史”數組中。 我需要做一些報告,所以我被建議使用cube.js。 問題是我需要用數組中包含的數據過濾我的一些圖表,為此,我需要進行一些連接。 我的問題是“observations”數組不包含研究id,“history”數組既不包含研究id也不包含觀察id,而我需要兩者都加入表格並根據作者進行過濾。 除非我修改數據庫中的集合以添加信息,否則我無法加入它們,不幸的是,這在我的情況下不是一個選項......

你有什么想法可以讓這個加入成為可能嗎?

非常感謝您的幫助

嵌入文檔由 Mongo BI 連接器表示為相關表。 在您的情況下,將有以下表格:

  1. 學習
  2. 研究觀察
  3. 研究_觀察_歷史

在這種情況下,Cube.js 架構將如下所示:

cube(`Studies`, {
  sql: `select * from studies`,

  joins: {
    Observations: {
      sql: `${Studies}._id = ${Observations}._id`,
      relationship: `hasMany`
    }
  },

  measures: {
    count: {
      type: `count`
    }
  },

  dimensions: {
    id: {
      sql: `_id`,
      type: `string`,
      primaryKey: true
    }
  }
});

cube(`Observations`, {
  sql: `select * from studies_observations`,

  joins: {
    History: {
      sql: `${Observations}._id = ${History}._id AND ${Observations}.observations_idx = ${History}.observations_idx`,
      relationship: `hasMany`
    }
  },

  dimensions: {
    id: {
      sql: `CONCAT(${CUBE}._id, ${CUBE}.observations_idx)`,
      type: `string`,
      primaryKey: true
    }
  }
});

cube(`History`, {
  sql: `select * from studies_observations_history`,

  dimensions: {
    id: {
      sql: `CONCAT(${CUBE}._id, ${CUBE}.observations_idx, ${CUBE}.\`observations.history_idx\`)`,
      type: `string`,
      primaryKey: true
    },

    author: {
      sql: `${CUBE}.\`observations.history.author\``
    }
  }
})

了解有關Mongo BI 數組架構Cube.js 連接的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM