Я изучаю Spring Data MongoDB с помощью учебника (https://spring.io/guides/tutorials/data/2/). В этом руководстве тип стоимости - BigDecimal, как показано ниже, и он хранится как «строка» в MongoDB. Итак, когда я попытался получить результат сортировки с сортировкой по возрастанию по полю стоимости, я получил неверный результат.
Я обнаружил, что использование класса BigDecimal - лучший способ для расчетов. Но если я сохраню числа как тип BigDecimal с помощью Spring Data MongoDB в MongoDB, он будет сохранен как строковый тип, и я получу неправильный результат сортировки, как в этом руководстве.
Что я могу сделать, чтобы получить правильный результат сортировки в числах ради точности? Не могли бы вы помочь мне решить эту проблему? Заранее большое спасибо.
Например,
1> MenuItem класс
@Document(collection = "menu")
public class MenuItem {
@Id
private String id;
@Field("itemName")
@Indexed
private String name;
private BigDecimal cost;
2> создать экземпляр MenuItem
MenuItem item = new MenuItem();
item.setDescription("Peanutty Noodles, perfect for every occasion.");
item.setName("Yummy Noodles");
item.setCost(new BigDecimal("52.99"));
MenuItem item = new MenuItem();
item.setDescription("Rice, Egg Fried");
item.setName("Yummy Rice");
item.setCost(new BigDecimal("211.99"));
3> отсортировать результат
db.menu.find (). sort ({стоимость: 1})
{"_id": ObjectId ("53e982f0300475a4fbab8c32"), "_class": "com.yummynoodlebar.persistence.domain.MenuItem", "itemName": "Вкусный рис", "description": "Рис, жареные яйца", "ингредиенты ": [{" name ":" Яйцо "," description ":" Куриные яйца "}, {" name ":" Рис "," description ":" Прямой белый рис "}]," cost ":" 211,99 " , "minutesToPrepare": 0}
{"_id": ObjectId ("53e982f0300475a4fbab8c33"), "_class": "com.yummynoodlebar.persistence.domain.MenuItem", "itemName": "Вкусный рис", "description": "Рис, жареные яйца", "ингредиенты ": [{" name ":" Яйцо "," description ":" Куриные яйца "}, {" name ":" Рис "," description ":" Пряный белый рис "}]," cost ":" 211,99 " , "minutesToPrepare": 0}
{"_id": ObjectId ("53e982f0300475a4fbab8c2f"), "_class": "com.yummynoodlebar.persistence.domain.MenuItem", "itemName": "Вкусная лапша", "description": "Лапша с арахисом, идеально подходит для любого случая. "," ингредиенты ": [{" name ":" Арахис "," description ":" Орех "}, {" name ":" Яйцо "," description ":" Используется в лапше "}, {" name ":" Лапша "," description ":" Прекрасная хрустящая лапша "}]," cost ":" 52,99 "," minutesToPrepare ": 0}
{"_id": ObjectId ("53e982f0300475a4fbab8c30"), "_class": "com.yummynoodlebar.persistence.domain.MenuItem", "itemName": "Вкусная лапша", "description": "Лапша с арахисом, идеально подходит для любого случая. "," ингредиенты ": [{" name ":" Арахис "," description ":" Орех "}, {" name ":" Яйцо "," description ":" Используется в лапше "}, {" name ":" Лапша "," description ":" Прекрасная хрустящая лапша "}]," cost ":" 52,99 "," minutesToPrepare ": 0}
{"_id": ObjectId ("53e982f0300475a4fbab8c31"), "_class": "com.yummynoodlebar.persistence.domain.MenuItem", "itemName": "Вкусная лапша", "description": "Лапша с арахисом, идеально подходит для любого случая. "," ингредиенты ": [{" name ":" Яйцо "," description ":" Используется в лапше "}, {" name ":" Арахис "," description ":" Орех "}, {" name ":" Лапша "," description ":" Прекрасная хрустящая лапша "}]," cost ":" 52,99 "," minutesToPrepare ": 0}