Tôi muốn lưu trữ số kiểu unsigned long long (uint64_t) trong tài liệu MongoDB, làm cách nào để thực hiện?Làm cách nào để lưu trữ các giá trị dài (uint64_t) chưa được ký trong tài liệu MongoDB?
tôi cần phải sử dụng unsigned dài dài vì tôi đang sử dụng Twitter API trong đó sử dụng unsigned số nguyên 64 bit https://dev.twitter.com/docs/twitter-ids-json-and-snowflake
Phạm vi của các loại không thể thiếu 64 bit unsigned cần được represended 8 byte và với một dữ liệu phạm vi từ 0 đến 18,446,744,073,709,551,615.
Tôi đang sử dụng C++ MongoDB driver và chức năng thành viên phụ thêm của lớp BSONArrayBuilder không bị quá tải cho unsigned long long, chỉ trong thời gian dài.
Đây là lỗi G ++ 4.7.2 spits ra khi tôi cố gắng gọi arrayBuilder.append (id), với id của loại uint64_t:
MongoDB/mongo/db/../bson/bson-inl.h:342:9: error: call of overloaded ‘append(const char*&, long long unsigned int&)’ is ambiguous
MongoDB/mongo/db/../bson/bsonobjbuilder.h:167:25: note: mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::StringData&, bool)
MongoDB/mongo/db/../bson/bsonobjbuilder.h:175:25: note: virtual mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::StringData&, int)
MongoDB/mongo/db/../bson/bsonobjbuilder.h:183:25: note: mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::StringData&, unsigned int)
MongoDB/mongo/db/../bson/bsonobjbuilder.h:188:25: note: virtual mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::StringData&, long long int)
MongoDB/mongo/db/../bson/bsonobjbuilder.h:244:25: note: virtual mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::StringData&, double)
MongoDB/mongo/db/../bson/bsonobjbuilder.h:324:25: note: mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::StringData&, mongo::Date_t)
- Tôi biết rằng BSON specification đã Int64 định nghĩa là 8 byte (64-bit số nguyên đã ký).
- Tôi KHÔNG muốn sử dụng chuỗi cho ID.
@BadDesign Những giá trị này sẽ đi khi dàn diễn viên tiêu cực (và trong DB), nhưng miễn là bạn đưa chúng trở lại 'uint64_t' khi đọc lại nó hoạt động. – JohnnyHK
Đây thực sự là giải pháp tốt nhất miễn là bạn không muốn Mongo thực hiện bất kỳ tính toán nào trên các giá trị đó. – bchurchill
Cảm ơn bạn rất nhiều @JohnnyHK! – cmcromance