[英]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 連接器表示為相關表。 在您的情況下,將有以下表格:
在這種情況下,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.