MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Panggil fungsi di dalam agregat mongodb?

Fungsi eksternal tidak berfungsi dengan kerangka kerja agregasi. Semuanya diuraikan ke BSON pada input, jadi tidak ada JavaScript atau apa pun yang diizinkan. Ini semua pada dasarnya diproses dari definisi "operator" BSON ke implementasi kode C++ asli sehingga sangat cepat.

Apa yang terjadi adalah "mengubah" logika yang Anda harapkan menjadi apa yang dapat diproses oleh kerangka kerja agregasi. Sebenarnya ada operator "logis" seperti $or dan $and yang bekerja dalam konteks ini:

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"
           ]
       }
    }}
])

Jadi tidak ada fungsi eksternal, cukup implementasikan logika dengan operator yang disediakan oleh kerangka kerja agregasi. Selain implementasi logika dasar ada $not untuk "membalikkan" ligic dan $cond yang bertindak sebagai "ternary" untuk memberikan hasil yang berbeda dari true/false evaluasi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Streaming Data NoSQL dengan MongoDB &Kafka

  2. Bagaimana cara mengubah jenis bidang?

  3. Cara mengaktifkan kueri MongoDB mentah langsung di Ruby

  4. Cara Menyebarkan Database Open edX MongoDB untuk Ketersediaan Tinggi

  5. Apa cara bersih untuk menghentikan mongod di Mac OS X?