sql >> Databáze >  >> NoSQL >> MongoDB

Je možné přepnout dividendu a dělitele dotazovacího operátoru $mod MongoDB?

Běžný .find dotaz pomocí $mod operátor zde nebude fungovat, ale přesto to můžete udělat pomocí agregačního rámce a $redact operátor a $mod aritmetický agregační operátor.

Předpokládejme, že máme ve sbírce následující dokumenty:

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

Následující dotaz vrátí všechny dokumenty, kde je 60 modulo hodnotu pole a rovná se 0 .

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

který produkuje:

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

Dalším pravděpodobně méně efektivním způsobem, jak toho dosáhnout, je použít $where operátor.

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



  1. Kde uložit MongoClient v Django

  2. Přidejte více hodnot pomocí operátoru $addToSet Mongo

  3. flushdb nevymaže všechny klíče v redis?

  4. Keras předpovídá, že se nevrátí do celerové úlohy