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

Функция за извикване в агрегата на mongodb?

Външните функции не работят с рамката за агрегиране. Всичко се анализира до BSON при въвеждане, така че JavaScript или нещо друго не е разрешено. Всичко това основно се обработва от дефиницията на "оператор" на BSON до внедряване на собствен код на C++, така че е наистина бързо.

Това се свежда до "преобразуване" на вашата очаквана логика към това, което рамката за агрегиране може да обработва. Всъщност има "логически" оператори като $or и $and които работят в този контекст:

db.collection.aggregate([
    { "$project": {
       "_id": 1,
       "status": {
           "$cond": [
               { "$or": [
                   // Your first set of rules requires "false" for "flag1" or 
                   // "flag2" and "true" for "flag3"
                   { "$and": [
                       { "$not": [
                           { "$or": [ "$flag1", "$flag2" ] },
                       ]},
                       "$flag3"
                   ]},
                   // Your second set of rules requires "true" for "flag1" or 
                   // "flag2" and "false" for "flag3"
                   { "$and": [
                       { "$or": [ "$flag1", "$flag2" ] },
                       { "$not": [ "$flag3" ] }
                   ]},
               ]},
               "ok",
               "broken"
           ]
       }
    }}
])

Така че няма външни функции, просто приложете логиката с операторите, които предоставя рамката за агрегиране. В допълнение към основните логически реализации има $not за да "обърнете" ligic и $cond който действа като "тройка", за да осигури различен резултат от true/false оценка.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да получа данни ReferenceField в mongoengine?

  2. Голанг получава празни предмети

  3. MongoDB:mongoimport губи връзка при импортиране на големи файлове

  4. 10-те най-добри MongoDB хостинг платформи

  5. mongodb премества документи от една колекция в друга колекция