进入 REQL 真的很困难。从直接等于匹配的角度来看,它起初看起来很直观,但是当我需要将数据匹配到正则表达式和列表时,它突然变得非常困难。然后我还想在匹配的范围内从结果集中只提取一个键/值对。
这是很多词,所以这里有一个单条记录的紧密示例:
{'Components':
{'Drives': [
{'Model': 'SeAGaTe', 'Serial': '04894', 'Size': '1000g'},
{'Model': 'SeagATE', 'Serial': '11279', 'Size': '1000g'},
{'Model': 'Intel', 'Serial': 'WX1748959TTR', 'Size': '250g'}
]},
{'Motherboard':
{'Model': 'X9DRT-HF+', 'Serial': 'VM128848'}
}
},
{'Identity Information':
{'Manufacturer': 'Supermicro', 'Serial': 'TT1434', 'Date Made': '2016-05-03'}
},
{'Logs':
{'Main Log': '<LOG CONTENTS 5,000 LINES>', 'Messages Log': '<LOG CONTENTS 2,000 LINES>'}
}
我正在尝试搜索所有记录(大约 8,000 个条目):
- 驱动不区分大小写的匹配模型“Seagate”
接着:
- 打印“Serial”键的值
我正在使用 RethinkDB 的 Web 界面,到目前为止,我最接近的是:
r.db('production').table('logs').filter(
r.row('Components')('Drives').contains(
function(doc){
return doc('Model').match("(?i)seagate").pluck('Serial')})
)
问题是,虽然这确实正确过滤了结果,但它似乎并没有只显示“串行”键。
如果有人能给我一个如何做到这一点的例子,并解释为什么答案有效,我将非常感激。