Bagikan melalui


$mod (sebagai operator kueri)

Operator $mod kueri digunakan untuk memfilter dokumen berdasarkan sisa operasi pembagian. Operator ini memungkinkan kueri yang melibatkan kondisi matematika, seperti menemukan nilai yang dapat dibagi dengan angka atau memiliki sisa tertentu. Ini didukung di Azure Cosmos DB untuk MongoDB (vCore).

Sintaksis

{ 
  <field>: { $mod: [ <divisor>, <remainder> ] } 
}
  • <field>: Bidang tempat melakukan operasi modulus.
  • <divisor>: Angka untuk membagi nilai bidang.
  • <remainder>: Sisa yang diharapkan setelah pembagian.

Contoh

Contoh 1: Temukan dokumen di mana sales nilai dapat dibagi dengan 3

db.collection.find({ "sales": { "$mod": [3, 0] } })

Contoh ini mengambil semua dokumen di mana sales nilai bidang dapat dibagi dengan 3 (yaitu, sisanya adalah 0). Ini akan menghasilkan output berikut:

[
  { "_id": 1, "sales": 9, "product": "A" },
  { "_id": 2, "sales": 15, "product": "B" },
  { "_id": 3, "sales": 21, "product": "C" }
]

Contoh 2: Temukan dokumen di mana totalSales nilai memiliki sisa 2 jika dibagi 5

db.collection.find({ "totalSales": { "$mod": [5, 2] } })

Kueri ini memfilter dokumen di totalSales mana bidang memiliki sisa 2 jika dibagi 5. Ini akan menghasilkan output berikut:

[
  { "_id": 4, "totalSales": 7, "product": "X" },
  { "_id": 5, "totalSales": 12, "product": "Y" },
  { "_id": 6, "totalSales": 17, "product": "Z" }
]

Contoh 3: Mengkueri bidang berlapis menggunakan $mod

db.collection.find({ "sales.monthly.total": { "$mod": [4, 1] } })

Contoh ini menunjukkan kueri bidang berlapis (sales.monthly.total) dengan $mod operator. Ini akan menghasilkan output berikut:

[
  { "_id": 7, "sales": { "monthly": { "total": 5 } }, "category": "Electronics" },
  { "_id": 8, "sales": { "monthly": { "total": 9 } }, "category": "Clothing" }
]

Pertimbangan

  • Jika kurang dari dua nilai ditentukan dalam array untuk operator $mod, kesalahan dilemparkan oleh server yang menunjukkan tidak cukup argumen yang diteruskan.
  • Jika lebih dari dua nilai ditentukan dalam array untuk operator $mod, kesalahan dilemparkan oleh server yang menunjukkan terlalu banyak argumen yang diteruskan.

Keterbatasan

  • Operator $mod hanya diterapkan ke bidang numerik. Menggunakannya pada bidang non-numerik mengakibatkan kesalahan.
  • Pastikan bahwa pembavis bukan nol, karena mengarah ke operasi yang tidak valid.