Chciałbym również poprzedzić to stwierdzeniem, że przechowywanie wartości liczbowych w bazie danych sformatowanych do prezentacji jako ciągi znaków jest złym pomysłem, który bez wątpienia już znasz.
Pomijając to, oto agregacja, której szukasz:
db.collection.aggregate([
{
"$project": {
"AppraisedValueDisplay": {
$replaceAll: {
input: "$AppraisedValueDisplay",
find: {
$literal: "$"
},
replacement: ""
}
}
}
},
{
"$project": {
"AppraisedValueDisplay": {
"$toInt": {
$replaceAll: {
input: "$AppraisedValueDisplay",
find: ",",
replacement: ""
}
}
}
}
},
{
$match: {
AppraisedValueDisplay: {
$gt: 30000,
$lt: 40000
}
}
}
])
Pomysł polega na zastąpieniu $
i ,
z pustymi ciągami, a następnie rzutuj powstałe ciągi na liczby całkowite. Od tego momentu wystarczy tylko dopasować wartości liczbowe. Plac zabaw:https://mongoplayground. netto/p/YU65M-q1QCM