Anda dapat menentukan kondisi filter untuk menyaring dokumen. Ekspresi filter bersifat opsional.
Sintaksis: filter:"ekspresi". Ekspresi=Operand Kiri Operator Relasional Operand Kanan.
Operand Kiri: Bidang atribut atau konstanta. Konstanta dapat berupa nilai numerik atau string.
Operator Relasional: Salah satu operator relasional berikut: > < = <= >= !=
Operand Kanan: Bidang atribut atau konstanta. Konstanta dapat berupa nilai numerik atau string.
Contoh:
filter:"price > 100": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang price lebih besar dari 100.
filter:"ids=1": Bidang ids adalah bidang multi-nilai. Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang ids mengandung 1.
filter:"province!=\"Zhejiang\"": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang province bukan Zhejiang.Contoh-contoh
Tentukan beberapa kondisi
Sintaksis: filter:"Kondisi Operator Logika Kondisi"
Kondisi: Sebuah ekspresi relasional lengkap, seperti price > 100.
Operator Logika: AND atau OR. Jika menggunakan AND, sistem mengembalikan dokumen yang memenuhi kedua kondisi. Jika menggunakan OR, sistem mengembalikan dokumen yang memenuhi salah satu kondisi. Anda juga dapat memberikan prioritas pada kondisi tertentu dengan tanda kurung ().
Contoh:
filter:"price > 100 AND categoryId=10": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang categoryId adalah 10 dan nilai dari bidang price lebih besar dari 100.
filter:"categoryId=100 OR categoryId=10": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang categoryId adalah 100 atau 10.
filter:"(categoryId=100 OR categoryId=10) AND price > 100": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang categoryId adalah 100 atau 10, dan nilai dari bidang price lebih besar dari 100.Gunakan ekspresi aritmatika untuk menentukan kondisi
Sintaksis: filter:"Operand Kiri Operator Aritmatika Operand Kanan Operator Relasional Nilai Kondisi"
Operand Kiri: Bidang atribut atau konstanta. Konstanta dapat berupa nilai numerik atau string.
Operator Aritmatika: Salah satu operator berikut: + - * /
Operand Kanan: Bidang atribut atau konstanta. Konstanta dapat berupa nilai numerik atau string.
Nilai Kondisi: Bidang atribut atau konstanta.
Contoh:
filter:"price*0.5 > 100": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana hasil kali nilai dari bidang price dikalikan dengan 0,5 lebih besar dari 100.
filter:"price-cost > 100": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana selisih antara nilai dari bidang price dan nilai dari bidang cost lebih besar dari 100.
filter:"(price*0.5 > 100) AND categoryId=10": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana hasil kali nilai dari bidang price dikalikan dengan 0,5 lebih besar dari 100 dan nilai dari bidang categoryId adalah 10.Gunakan fungsi untuk menentukan kondisi
Sintaksis: filter:"Fungsi Operator Relasional Operand Kanan"
Deskripsi: Fungsi: Fungsi bawaan seperti in atau notin. Untuk informasi lebih lanjut, lihat bagian "Fungsi Bawaan". Jika fungsi mengembalikan nilai bertipe BOOLEAN, operator relasional tidak diperlukan dalam ekspresi filter. Fungsi juga dapat digunakan sebagai operand kanan dari operator relasional.
Contoh:
filter:"in(id,"1|2|3")": Anda dapat menggunakan ekspresi ini untuk meminta dokumen di mana nilai dari bidang id adalah 1, 2, atau 3.Berikut ini menjelaskan cara menggunakan fungsi bawaan lainnya untuk menentukan kondisi.
Fungsi Bawaan
distance
distance: Mengembalikan jarak sferis antara dua titik. Biasanya digunakan dalam perhitungan jarak untuk layanan berbasis lokasi (LBS).
Contoh:
Cari toko-toko dalam radius 10 kilometer dari koordinat pengguna. Garis bujur dan lintang pengguna adalah 120.34256 dan 30.56982. Bidang lon dan lat harus dikonfigurasi sebagai bidang atribut.
filter:"distance(lon,lat,\"120.34256\",\"30.56982\")<10"contain dan notcontain
Deskripsi:
contain: Memeriksa apakah nilai-nilai dari bidang a mengandung nilai dari bidang b. Bidang a dapat berupa bidang bernilai tunggal atau multi-nilai.
notcontain: Memeriksa apakah nilai-nilai dari bidang a tidak mengandung nilai dari bidang b. Bidang a dapat berupa bidang bernilai tunggal atau multi-nilai.
Parameter:
contain(a,b)
a: Bidang bernilai tunggal atau multi-nilai bertipe INT32, INT64, atau STRING.
b: String konstan. Konstanta-konstanta dipisahkan oleh tanda batang vertikal (
|). Jika nilai-nilai dari bidang a cocok dengan salah satu konstanta, fungsi mengembalikan true.
notcontain(a,b)
a: Bidang bernilai tunggal atau multi-nilai bertipe INT32, INT64, atau STRING.
b: String konstan. Konstanta-konstanta dipisahkan oleh tanda batang vertikal (
|). Jika nilai-nilai dari bidang a tidak cocok dengan salah satu konstanta, fungsi mengembalikan true.
Nilai Pengembalian:
contain(a,b): Mengembalikan nilai bertipe BOOLEAN. Nilai valid: true dan false. Nilai true menunjukkan bahwa nilai-nilai dari bidang a mengandung nilai dari bidang b. Nilai false menunjukkan sebaliknya.notcontain(a,b): Mengembalikan nilai bertipe BOOLEAN. Nilai valid: true dan false. Nilai true menunjukkan bahwa nilai-nilai dari bidang a tidak mengandung nilai dari bidang b. Nilai false menunjukkan sebaliknya.
Contoh:
Gunakan fungsi contain untuk meminta dokumen di mana nilai-nilai dari bidang nid mengandung 1, 2, atau 3.
filter:"contain(nid, \"1|2|3\")"Gunakan fungsi notcontain untuk meminta dokumen di mana nilai-nilai dari bidang nid tidak mengandung 1, 2, atau 3.
filter:"notcontain(nid, \"1|2|3\")"in dan notin
in atau notin: Memeriksa apakah nilai-nilai bidang ada dalam daftar tertentu.
Contoh:
Meminta dokumen di mana nilai dari bidang type adalah 1, 2, atau 3. Bidang type harus bertipe INT.
filter:"in(type, \"1|2|3\")"Meminta dokumen di mana nilai dari bidang type bukan 1, 2, atau 3. Bidang type harus bertipe INT32.
filter:"notin(type, \"1|2|3\")"Catatan Penggunaan
Sistem tidak dapat memeriksa kesetaraan nilai bertipe FLOAT atau DOUBLE karena masalah presisi. Gunakan operator lebih besar dari (>) atau lebih kecil dari (<) jika bidang bertipe FLOAT atau DOUBLE diperlukan dalam ekspresi filter.
Nilai bertipe STRING harus diapit dengan tanda kutip ganda ('') dalam ekspresi filter. Operator relasional dapat digunakan untuk mendefinisikan hubungan antara string dan nilai lain, tetapi operator aritmatika tidak dapat digunakan.
Operator kesetaraan (=) atau ketidaksetaraan (!=) dapat digunakan dalam ekspresi yang melibatkan bidang bertipe STRING, tetapi operator lebih besar dari (>) atau lebih kecil dari (<) tidak dapat digunakan.
Jika operator kesetaraan (=) atau ketidaksetaraan (!=) digunakan untuk mendefinisikan hubungan antara bidang multi-nilai dan nilai kondisi, sistem akan mengembalikan dokumen yang nilainya dari bidang multi-nilai mencakup nilai kondisi.
Tanda kutip ganda (") dalam ekspresi harus diloloskan.