MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Възможно ли е да превключите дивидента и делителя на $mod оператора на заявка на MongoDB?

Обикновен .find заявка с $mod операторът няма да работи тук, но все пак можете да направите това, като използвате рамката за агрегиране и $redact оператор и $mod оператор за аритметично агрегиране.

Да предположим, че имаме следните документи в нашата колекция:

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

Следната заявка връща всички тези документи, където 60 по модул стойността на полето a е равно на 0 .

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

което произвежда:

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

Друг вероятно по-малко ефективен начин да го направите е да използвате $where оператор.

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да инсталирате MongoDB Community Edition на Ubuntu

  2. Поръчка и лимит води до заявка с обратно извикване

  3. Express node.js контролерът не чака манипулиране на данни и връща стари данни

  4. Mapreduce в mongodb ruby ​​собствен драйвер

  5. Каква е употребата на тип javascript/javascriptwithscope на bson