Bagaimana cara menyimpan mpz_t dari gmlib di mongo db?

Saya menggunakan perpustakaan GMP untuk mengelola angka besar dalam kode c++. Saya juga menggunakan klien mongocxx untuk menghubungkan dan membuat pertanyaan ke database mongodb. Bagaimana cara menyimpan nomor mpz_t di database mongo? Atau lebih baik lagi, bagaimana cara mengubah mpz_t menjadi NumberberLong di mongodb?


person Federico Caccia    schedule 03.07.2019    source sumber


Jawaban (1)


Itu tergantung pada apa yang Anda rencanakan. MongoDB tidak memiliki tipe angka presisi yang berubah-ubah, jadi pada dasarnya Anda memiliki dua opsi:

Jika tipe angka cocok dengan bilangan bulat 64-bit, Anda dapat menggunakan fungsinya

unsigned long valint = mpz_get_ui(val);
// or
long valint = mpz_get_si(val);

untuk mengonversi angka menjadi bilangan bulat 64-bit dan menyimpannya dalam tipe data NumberLong.

Jika tidak, Anda selalu dapat mengonversi angka val menjadi string dengan

char *valstr = mpz_get_str(NULL, 10, val);

dan menyimpannya sebagai teks dalam database. Ini mungkin solusi paling aman, jika Anda hanya ingin menyimpan nomornya dan tidak perlu memprosesnya di tingkat basis data.

person Ctx    schedule 03.07.2019