我想將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