sql >> Database >  >> NoSQL >> MongoDB

Is het mogelijk om het deeltal en de deler van MongoDB's $mod-queryoperator om te wisselen?

Een gewone .find vraag met de $mod operator werkt hier niet, maar u kunt dit toch doen met behulp van het aggregatieraamwerk en de $redact operator en de $mod rekenkundige aggregatie-operator.

Stel dat we de volgende documenten in onze collectie hebben:

{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 },
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 },
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 },
{ "_id" : ObjectId("573f63504c01ce47a183a636"), "a" : 24 }

De volgende query retourneert al die documenten waar 60 modulo de waarde van het veld a is gelijk aan 0 .

db.collection.aggregate([
    { "$redact": { 
        "$cond": [ 
            { "$eq": [ {"$mod": [ 60, "$a" ] }, 0 ] }, 
            "$$KEEP", 
            "$$PRUNE"
        ]
    }}
])

die produceert:

{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 }
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 }
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 }

Een andere waarschijnlijk minder efficiënte manier om dit te doen, is om de $where telefoniste.

db.collection.find("60 % this.a === 0")



  1. het verbinden van een mongodb gemaakt in mongolab via een java-toepassing

  2. Mongo met java - zoek zoekopdracht met batchgrootte

  3. Het gebruik van findOne in een lus duurt te lang in Node.js

  4. Render afbeelding opgeslagen in Mongo (GridFS) met Node + Jade + Express