REQL に参加するのは本当に大変でした。等号一致の観点からすると、最初は直感的に思えましたが、データを正規表現やリストに一致させる必要があると、突然非常に難しくなります。次に、一致したものの範囲内で、結果セットからキーと値のペアを 1 つだけ取り出したいと考えています。
これは単語数が多いため、1 つのレコードの例を次に示します。
{'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」を駆動します
その後:
- 「シリアル」キーの値を出力します
私は RethinkDB の Web インターフェイスを使用していますが、これまでのところ最も近いものは次のとおりです。
r.db('production').table('logs').filter(
r.row('Components')('Drives').contains(
function(doc){
return doc('Model').match("(?i)seagate").pluck('Serial')})
)
問題は、これは結果を正しくフィルタリングしますが、「シリアル」キーだけを表示しているようには見えないことです。
誰かがこれを達成する方法の例を挙げて、その答えがうまくいく理由を説明できれば、本当に感謝しています.