Bagikan melalui


$round

Operator $round digunakan untuk membulatkan angka ke tempat desimal tertentu. Ini berguna dalam agregasi di mana presisi numerik penting, seperti perhitungan keuangan atau analisis statistik.

Sintaksis

{ $round: [ <number>, <place> ] }

Parameter-parameternya

Pengaturan Deskripsi
<number> Angka yang akan dibulatkan.
<place> Tempat desimal yang angkanya harus dibulatkan.

Contoh

Membulatkan nilai garis lintang dan bujur

db.collection.aggregate([
  {
    $project: {
      roundedLat: { $round: ["$location.lat", 1] },
      roundedLon: { $round: ["$location.lon", 1] }
    }
  }
])

Ini membulatkan nilai garis lintang dan bujur ke satu tempat desimal untuk keterbacaan yang lebih baik:

[
  { "_id": 1, "location": { "lat": 37.774929, "lon": -122.419416 }, "roundedLat": 37.8, "roundedLon": -122.4 },
  { "_id": 2, "location": { "lat": 40.712776, "lon": -74.005974 }, "roundedLat": 40.7, "roundedLon": -74.0 }
]

Membulatkan total penjualan ke ribu terdekat

db.collection.aggregate([
  {
    $project: {
      roundedSales: { $round: ["$sales.fullSales", -3] }
    }
  }
])

Ini membulatkan total penjualan ke seribu terdekat, yang berguna untuk pelaporan keuangan:

[
  { "_id": 3, "sales": { "fullSales": 25400 }, "roundedSales": 25000 },
  { "_id": 4, "sales": { "fullSales": 127500 }, "roundedSales": 128000 }
]

Membulatkan persentase diskon ke bilangan bulat terdekat

db.collection.aggregate([
  {
    $unwind: "$promotionEvents"
  },
  {
    $unwind: "$promotionEvents.discounts"
  },
  {
    $project: {
      eventName: "$promotionEvents.eventName",
      categoryName: "$promotionEvents.discounts.categoryName",
      roundedDiscount: { $round: ["$promotionEvents.discounts.discountPercentage", 0] }
    }
  }
])

Ini membulatkan persentase diskon ke bilangan bulat terdekat, yang berguna untuk penyesuaian tampilan dan harga:

[
  {
    "_id": 5,
    "eventName": "Black Friday",
    "categoryName": "Electronics",
    "roundedDiscount": 20
  },
  {
    "_id": 6,
    "eventName": "Holiday Sale",
    "categoryName": "Clothing",
    "roundedDiscount": 15
  }
]