我想将unsigned long long(uint64_t)中的数字存储在MongoDB文档中,我该怎么做?如何将unsigned long long(uint64_t)值存储在MongoDB文档中?
我需要,因为我使用利用无符号的64个整数https://dev.twitter.com/docs/twitter-ids-json-and-snowflake微博API使用无符号长长
需要由8个字节,并用数据来represended的无符号64位整数类型的范围范围0至18,446,744,073,709,551,615。
我使用的是C++ MongoDB driver,BSONArrayBuilder类的追加成员函数没有unsigned long long的重载,只有很长的long。
这里的错误G ++ 4.7.2吐出来的时候我打电话arrayBuilder.append(ID),类型uint64_t中的ID:
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 specification已Int64的定义为8个字节(64位有符号整数)。
- 我不想为ID使用字符串。
@BadDesign这些值将变为负时,铸铁(以及DB),但只要你读回'uint64_t'就可以使它回到原来的状态。 – JohnnyHK
只要您不希望Mongo对这些值进行任何计算,这真的是最好的解决方案。 – bchurchill
非常感谢你@JohnnyHK! – cmcromance