sql >> Databasteknik >  >> NoSQL >> MongoDB

Är det möjligt att byta utdelning och divisor för MongoDBs $mod-frågeoperatör?

En vanlig .find fråga med $mod operatör kommer inte att fungera här, men du kan ändå göra detta med hjälp av aggregeringsramverket och $redact operatorn och $mod aritmetisk aggregeringsoperator.

Anta att vi har följande dokument i vår samling:

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

Följande fråga returnerar alla de dokument där 60 modulo värdet för fältet a är lika med 0 .

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

som producerar:

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

Ett annat förmodligen mindre effektivt sätt att göra det är att använda $where operatör.

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



  1. MongoDB fynd i samling med okänd nyckel

  2. Spring Data MongoDB hur man tilldelar utgångstid programmatiskt

  3. Varför gjordes bara en anslutning till redis i detta givna program?

  4. Hur hittar man det matchade rekordet i mongodb?