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

Menjalankan JS di MongoDB saat memasukkan dari PHP

Fungsi JavaScript adalah tipe kelas satu di BSON (lihat spesifikasi ), jadi di kedua contoh (JS shell dan PHP) Anda akan menyimpan fungsi itu sendiri di bidang. Jika Anda ingin mengevaluasi fungsi tersebut, Anda harus menjalankan JavaScript sisi server. Perhatikan contoh ini:

<?php

$m = new Mongo();
$db = $m->test;
$c = $db->foo;
$c->drop();

$f = 'function() { return 123; }';

$c->insert(['f' => new MongoCode($f)]);
var_dump($c->findOne()['f']);

$g = <<<'END'
    function() {
        var doc = db.foo.findOne();
        db.foo.update(
            { _id: doc._id },
            { $set: { f: doc.f() }}
        );
    }
END;

$db->execute(new MongoCode($g));

$c->insert(['f' => new MongoCode($f)]);
var_dump($c->findOne()['f']);

Ini menghasilkan output berikut:

object(MongoCode)#7 (2) {
  ["code"]=>
  string(26) "function() { return 123; }"
  ["scope"]=>
  array(0) {
  }
}
float(123)

Jika fungsi Anda bergantung pada beberapa keadaan eksternal (misalnya perlu menjalankan kueri untuk menghitung hasilnya), Anda mungkin ingin menyimpannya di bidang terpisah dan secara berkala mengulangi dokumen Anda dan memperbarui bidang lain untuk menyimpan outputnya. Saat Anda menerapkan ini, ingatlah bahwa evaluasi kode sisi server memiliki beberapa batasan konkurensi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat menghapus koleksi dari mongodb

  2. MongoDB 3 Java memeriksa apakah ada koleksi

  3. Jumlah dokumen yang salah di kluster pecahan MongoDB

  4. Jadwalkan pekerjaan Node.js setiap lima menit

  5. Di mana saya harus menambahkan opsi --rest untuk MongoDB?