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

MongoDB - cara memasukkan catatan menggunakan fungsi peningkatan otomatis

Anda perlu menambahkan bidang _id di $location.Dan _id harus Anda sertakan id.Contoh:

function add_playbook_history_record($location)
{
        $m = new MongoClient("mongodb://10.1.1.111:27017");
        $db = $m->testdb;
        $collection = $db->testcollection;
        $location['_id'] = getNextSequence('playhistid')
        $cursor = $collection->insert($location);
}

Rekomendasi saya:tambahkan upsert di findAndModify

Ini akan berhasil untuk Anda:

    function getNextSequence($name)
    {
        $m = new MongoClient("mongodb://10.1.1.111:27017"); // In a real project, you do not need all the time to re-create the connection
        $db = $m->testdb;
        $collection = $db->counters;
        $result =  $collection->findAndModify(
            ['_id' => $name],
            ['$inc' => ['seq' => 1]],
            ['seq' => true],
            ['new' => true, 'upsert' => true]
        );
        if (isset($result['seq']))
        {
            return $result['seq'];
        }
        else
        {
            return false;
        }
    }

Dalam proyek nyata, Anda tidak perlu waktu lama untuk membuat ulang koneksi

Anda dapat membuat MongoDatabase (pola ini singelton)

class MongoDatabase{
    private function __construct(){}
    public static function getInstance(){...} // return MongoClient
} 

dan panggil metode kebutuhan

MongoDatabase::getInstance()->selectCollection('counters')->findAndModify(...)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Meminta beberapa koleksi dengan dua kueri?

  2. Bagaimana cara rata-rata nilai yang dijumlahkan di mongodb?

  3. Cari berdasarkan elemen objek dalam array

  4. Perlu hitungan berbeda pada beberapa bidang yang digabungkan dari koleksi lain menggunakan kueri agregasi mongodb

  5. Memasukkan array besar objek di mongodb dari nodejs