sql >> Database teknologi >  >> NoSQL >> MongoDB

Er det muligt at skifte udbytte og divisor for MongoDBs $mod-forespørgselsoperatør?

En almindelig .find forespørgsel med $mod operatør vil ikke fungere her, men du kan stadig gøre dette ved at bruge aggregeringsrammen og $redact operatøren og $mod aritmetisk aggregeringsoperator.

Antag, at vi har følgende dokumenter i vores samling:

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

Følgende forespørgsel returnerer alle de dokumenter, hvor 60 modulo værdien af ​​feltet a er lig med 0 .

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

som producerer:

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

En anden formentlig mindre effektiv måde at gøre det på er at bruge $where operatør.

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



  1. Hvordan finder man array på mongoose doc-objekt?

  2. Mongoose opdateringsdokument Mislykkedes med findByIdAndUpdate

  3. mongodb vis dbs listDatabaser mislykkedes

  4. PHP intl.so mislykkes