Un .find
régulier
requête avec le $mod
L'opérateur ne fonctionnera pas ici, mais vous pouvez toujours le faire en utilisant le cadre d'agrégation et le $redact
opérateur et le $mod
opérateur d'agrégation arithmétique.
Supposons que nous ayons les documents suivants dans notre collection :
{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 },
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 },
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 },
{ "_id" : ObjectId("573f63504c01ce47a183a636"), "a" : 24 }
La requête suivante renvoie tous les documents où 60
modulo la valeur du champ a
est égal à 0
.
db.collection.aggregate([
{ "$redact": {
"$cond": [
{ "$eq": [ {"$mod": [ 60, "$a" ] }, 0 ] },
"$$KEEP",
"$$PRUNE"
]
}}
])
qui produit :
{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 }
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 }
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 }
Une autre façon probablement moins efficace de le faire est d'utiliser le $where
opérateur.
db.collection.find("60 % this.a === 0")