有两个集合tables
和table_rows
如下:
tables = {
"_id": "641ce65852a7ccd2f4a7b298",
"name": "table name",
"description": "table description",
"columns": [{
"_id": "641ce65852a7ccd2f4a7b299",
"name": "column 1",
"dataType": "String"
}, {
"_id": "641cf95543a5f258bfaf69e3",
"name": "column 2",
"dataType": "Number"
}]
}
table_rows = {
"tableId": "641ce65852a7ccd2f4a7b298",
"641ce65852a7ccd2f4a7b299": "Example string",
"641cf95543a5f258bfaf69e3": 101
}
简而言之,它表示2列1行的常规表格数据,如下所示:
| 栏1|第2栏|
| --------------|--------------|
| 示例字符串|一百零一|
有没有什么方法可以使用$lookup
操作符来连接这两个集合,基于tables collection中columns
数组的_id
和table_rows
集合的key name?我尝试的是以某种方式连接列定义(名称,数据类型等)沿着单元格值。
正如您所看到的,card_rows
集合中的实际键名是列本身的_id
。
理想情况下,这将是一个集合,但这些表可以增长到数百列和10 K行,因此它被建模为两个集合,以避免在mongo中未绑定数组。
1条答案
按热度按时间rn0zuynd1#
一个选项是从
table_rows
开始:$match
的相关文档使用tableId
、$unwind
的“行”和$group
的“列”1.使用
$lookup
和pipeline获取每个列文档的列名1.格式
了解它在playground example上的工作原理
$group
步骤...