我有一个表(数据库名称为libstats
,表名为flowcells
),其中包含以下结构:
{
"barcode": "C3W9UACXX",
"id": "0021732f-2c42-4e9a-90fd-c68bb0d998dc",
"lanes": {
"1": [
{
"bases": 2431000000,
"library_id": "SL58263",
"perc_raw_clusters": 5.5,
"pf_reads": 24312986,
"q30": 92.23,
"qscore": 35.82,
"reads": 25834646
},
{
"bases": 2121000000,
"library_id": "SL58264",
"perc_raw_clusters": 4.83,
"pf_reads": 21209905,
"q30": 91.57,
"qscore": 35.62,
"reads": 22701386
}...],
"2": [
{
"bases": 2431000000,
"library_id": "SL58263",
"perc_raw_clusters": 5.5,
"pf_reads": 24312986,
"q30": 92.23,
"qscore": 35.82,
"reads": 25834646
},
{
"bases": 2121000000,
"library_id": "SL58264",
"perc_raw_clusters": 4.83,
"pf_reads": 21209905,
"q30": 91.57,
"qscore": 35.62,
"reads": 22701386
}...],
},
//more keys
}
lanes
对象将始终具有相同的键(数字1到8),并且与这些键中的每个键关联的数组中的对象将始终具有library_id
属性。我需要将library_name
添加到每个对象中,这样我得到的结果如下:
{... “通道”:{ “1”:[ { “基地”:2121000000, “library_id”:“SL58264”, “library_name”:'my_library_name',< ---添加了属性 “perc_raw_clusters”:4.83, “pf_reads”:21209905, “q30”:91.57, “qscore”:35.62, “读”:22701386 }, ... ] ... ... {
我有另一个表library_name
属性(db name libraries
,表名libraries
),结构更简单:
{
library_id: 'SL123456',
library_name: 'my_library_name'
}
我可以使用RQL查询来完成此任务吗?在更简单的表格上,eqJoin()可以很好地工作,但是我无法使用这个更复杂的结构。
答案 0 :(得分:1)
如果lanes
是一个数组而不是一个对象,这会更容易,但对于当前的文档结构,这样的查询应该这样做:
r.db('libstats').table('flowcells').merge(function(flowcell) {return {
'lanes': flowcell('lanes').keys().map(function(n) {
return r.expr([n, flowcell('lanes')(n).merge(function(lane) {
{'library_name': r.db('libraries').table('libraries').get(lane('library_id'))}]).coerce_to('OBJECT')})};})