Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Operatorn $round används för att avrunda ett tal till en angiven decimal. Det är användbart i sammansättningar där numerisk precision är viktigt, till exempel ekonomiska beräkningar eller statistisk analys.
Syntax
{
$round: [ <number>, <place> ]
}
Parameterar
| Parameter | Description |
|---|---|
<number> |
Talet som ska avrundas. |
<place> |
Decimaltecknet som talet ska avrundas till. |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Exempel 1 – Avrunda platskoordinaterna för butiker
Om du vill avrunda latitud och longitud för alla butiker i företaget "First Up Consultants" kör du först en fråga för att filtrera efter företagets namn. Använd sedan operatorn $round på fälten lat och lon för att returnera önskat resultat.
db.stores.aggregate([{
$match: {
company: {
$in: ["First Up Consultants"]
}
}
}, {
$project: {
company: 1,
"location.lat": 1,
"location.lon": 1,
roundedLat: {
$round: ["$location.lat", 1]
},
roundedLon: {
$round: ["$location.lon", 1]
}
}
}])
De första tre resultaten som returneras av den här frågan är:
[
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"location": {
"lat": 87.2239,
"lon": -129.0506
},
"company": "First Up Consultants",
"roundedLat": 87.2,
"roundedLon": -129.1
},
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"location": {
"lat": -29.1866,
"lon": -112.7858
},
"company": "First Up Consultants",
"roundedLat": -29.2,
"roundedLon": -112.8
},
{
"_id": "62438f5f-0c56-4a21-8c6c-6bfa479494ad",
"location": {
"lat": -0.2136,
"lon": 108.7466
},
"company": "First Up Consultants",
"roundedLat": -0.2,
"roundedLon": 108.7
}
]
Exempel 2 – Avrunda till närmaste tusen
Om du vill avrunda den totala försäljningsvolymen för butiker inom företaget "First Up Consultants" kör du först en fråga för att filtrera butiker efter företagets namn. Använd sedan operatorn $round i fältet totalFörsäljning för att avrunda värdet till närmaste tusen.
db.stores.aggregate([{
$match: {
company: {
$in: ["First Up Consultants"]
}
}
}, {
$project: {
company: 1,
"sales.totalSales": 1,
roundedSales: {
$round: ["$sales.totalSales", -3]
}
}
}])
De första tre resultaten som returneras av den här frågan är:
[
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"sales": {},
"company": "First Up Consultants",
"roundedSales": 279000
},
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"sales": {},
"company": "First Up Consultants",
"roundedSales": 50000
},
{
"_id": "62438f5f-0c56-4a21-8c6c-6bfa479494ad",
"sales": {},
"company": "First Up Consultants",
"roundedSales": 69000
}
]