ฉันใช้ไลบรารี GMP เพื่อจัดการตัวเลขจำนวนมากในโค้ด c++ ฉันยังใช้ไคลเอนต์ mongocxx เพื่อเชื่อมต่อและทำการสืบค้นไปยังฐานข้อมูล mongodb ฉันจะจัดเก็บหมายเลข mpz_t ในฐานข้อมูล mongo ได้อย่างไร หรือดีกว่านั้น ฉันจะแปลง mpz_t เป็น NumeberLong ใน mongodb ได้อย่างไร
จะเก็บ mpz_t จาก gmlib บน mongo db ได้อย่างไร
คำตอบ (1)
ขึ้นอยู่กับสิ่งที่คุณวางแผนจะทำ MongoDB ไม่มีประเภทตัวเลขที่แม่นยำ ดังนั้นคุณจึงมีสองตัวเลือก:
หากประเภทตัวเลขพอดีกับ จำนวนเต็ม 64 บิต คุณสามารถใช้ฟังก์ชันดังกล่าวได้
unsigned long valint = mpz_get_ui(val);
// or
long valint = mpz_get_si(val);
เพื่อแปลงตัวเลขเป็นจำนวนเต็ม 64 บิต และจัดเก็บไว้ในประเภทข้อมูล NumberLong
มิฉะนั้น คุณสามารถแปลงตัวเลข val
เป็นสตริงได้ตลอดเวลา
char *valstr = mpz_get_str(NULL, 10, val);
และจัดเก็บเป็นข้อความในฐานข้อมูล นี่อาจเป็นวิธีแก้ปัญหาที่ปลอดภัยที่สุด หากคุณต้องการเพียง จัดเก็บ หมายเลข และไม่จำเป็นต้องประมวลผลที่ ระดับฐานข้อมูล
person
Ctx
schedule
03.07.2019