Tablestore mendukung penyaringan sisi server untuk hanya mengembalikan data yang memenuhi kondisi yang Anda tentukan. Topik ini menjelaskan cara menggunakan filter dengan SDK Node.js.
Prasyarat
Jenis Filter
Tablestore menyediakan dua jenis filter:
SingleColumnCondition: Menyaring data berdasarkan nilai satu kolom atribut.
CompositeCondition: Menggabungkan beberapa kondisi filter.
SingleColumnCondition
TableStore.SingleColumnConditionContoh
Contoh berikut melakukan kueri rentang untuk nilai primary key dalam rentang [row1, row3), lalu menerapkan filter untuk hanya mengembalikan baris yang nilai kolom atribut col1-nya adalah val1.
var params = {
tableName: 'test_table',
// Tetapkan primary key awal untuk kueri.
inclusiveStartPrimaryKey: [{ 'id': 'row1' }],
// Tetapkan primary key akhir untuk kueri (eksklusif).
exclusiveEndPrimaryKey: [{ 'id': 'row3' }]
};
// Buat filter dengan kondisi: col1 == "val1".
var singleColumnCondition = new TableStore.SingleColumnCondition('col1', 'val1', TableStore.ComparatorType.EQUAL);
params.columnFilter = singleColumnCondition;
// Panggil metode getRange untuk mengkueri data.
client.getRange(params, function (err, data) {
if (err) {
console.log('Kueri rentang gagal dengan error: ', err);
return;
}
// Proses respons.
console.log('* RequestId: ', data.RequestId);
console.log('* Biaya CU Baca: ', data.consumed.capacityUnit.read);
console.log('* Biaya CU Tulis: ', data.consumed.capacityUnit.write);
console.log('* Data Baris: ');
data.rows.forEach(function (row) {
console.log(row);
});
});Untuk mengecualikan baris yang tidak berisi kolom atribut yang ditentukan, atur passIfMissing ke false.
singleColumnCondition.passIfMissing = false;Untuk mengevaluasi semua versi data, atur latestVersionOnly ke false. Jika terdapat versi data yang memenuhi kondisi, baris tersebut akan dikembalikan.
singleColumnCondition.latestVersionOnly = false
CompositeCondition
Anda dapat menggabungkan hingga 32 kondisi.
TableStore.CompositeConditionContoh
Contoh berikut melakukan kueri rentang untuk baris dengan nilai primary key dalam rentang [row1, row3), lalu menerapkan filter komposit.
var params = {
tableName: 'test_table',
// Tetapkan primary key awal.
inclusiveStartPrimaryKey: [{ 'id': 'row1' }],
// Tetapkan primary key akhir (eksklusif).
exclusiveEndPrimaryKey: [{ 'id': 'row3' }]
};
// Buat kondisi kolom tunggal pertama: col1 == "val1".
var singleColumnCondition1 = new TableStore.SingleColumnCondition('col1', 'val1', TableStore.ComparatorType.EQUAL);
// Buat kondisi kolom tunggal kedua: col2 == "val2".
var singleColumnCondition2 = new TableStore.SingleColumnCondition('col2', 'val2', TableStore.ComparatorType.EQUAL);
// Buat kondisi komposit pertama: col1 == "val1" OR col2 == "val2".
var compositeCondition1 = new TableStore.CompositeCondition(TableStore.LogicalOperator.OR);
compositeCondition1.addSubCondition(singleColumnCondition1);
compositeCondition1.addSubCondition(singleColumnCondition2);
// Buat kondisi kolom tunggal ketiga: col3 == "val3".
var singleColumnCondition3 = new TableStore.SingleColumnCondition('col3', 'val3', TableStore.ComparatorType.EQUAL);
// Buat kondisi komposit kedua: (col1 == "val1" OR col2 == "val2") AND col3 == "val3".
var compositeCondition2 = new TableStore.CompositeCondition(TableStore.LogicalOperator.AND);
compositeCondition2.addSubCondition(compositeCondition1);
compositeCondition2.addSubCondition(singleColumnCondition3);
// Tambahkan filter ke kueri.
params.columnFilter = compositeCondition2
// Panggil metode getRange untuk mengkueri data.
client.getRange(params, function (err, data) {
if (err) {
console.log('Kueri rentang gagal dengan error: ', err);
return;
}
// Proses respons.
console.log('* RequestId: ', data.RequestId);
console.log('* Biaya CU Baca: ', data.consumed.capacityUnit.read);
console.log('* Biaya CU Tulis: ', data.consumed.capacityUnit.write);
console.log('* Data Baris: ');
data.rows.forEach(function (row) {
console.log(row);
});
});