我想在 MongoDB 文档中存储unsigned long long (uint64_t)类型的数字,我该怎么做?
我需要使用 unsigned long long 因为我使用的是使用无符号 64 位整数的 Twitter API https://dev.twitter.com/docs/twitter-ids-json-and-snowflake
无符号 64 位整数类型的范围需要用 8 个字节表示,数据范围为 0 到 18,446,744,073,709,551,615。
我正在使用C++ MongoDB 驱动程序, BSONArrayBuilder类的 append 成员函数没有 unsigned long long 的重载,只有 long long。
当我尝试使用 uint64_t 类型的 id 调用 arrayBuilder.append(id) 时,出现以下错误 G++ 4.7.2:
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)
- 我知道BSON 规范将 int64 定义为 8 个字节(64 位有符号整数)。
- 我不想为 ID 使用字符串。