Eu também gostaria de começar dizendo que armazenar valores numéricos em seu banco de dados formatados para apresentação como strings é uma má ideia, que você sem dúvida já conhece.
Com isso fora do caminho, aqui está a agregação que você está procurando:
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
}
}
}
])
A ideia é substituir o
$
e ,
com strings vazias e, em seguida, converta as strings resultantes em inteiros. A partir desse ponto, é apenas uma questão de combinar os valores numéricos.Playground:https://mongoplayground. net/p/YU65M-q1QCM