Um
.find
regular
consulta com o $mod
operador não funcionará aqui, mas ainda assim, você pode fazer isso usando a estrutura de agregação e o $redact
operador e o $mod
operador de agregação aritmética. Suponha que temos os seguintes documentos em nossa coleção:
{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 },
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 },
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 },
{ "_id" : ObjectId("573f63504c01ce47a183a636"), "a" : 24 }
A consulta a seguir retorna todos os documentos em que
60
modulo o valor do campo a
igual a 0
. db.collection.aggregate([
{ "$redact": {
"$cond": [
{ "$eq": [ {"$mod": [ 60, "$a" ] }, 0 ] },
"$$KEEP",
"$$PRUNE"
]
}}
])
que produz:
{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 }
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 }
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 }
Outra maneira provavelmente menos eficiente de fazer isso é usar o
$where
operador. db.collection.find("60 % this.a === 0")