unsigned long long(uint64_t)型の数値をMongoDBドキュメントに保存したいのですが、どうすればよいですか?
符号なし64ビット整数を使用するTwitterAPIを使用しているため、unsignedlonglongを使用する必要があります https://dev.twitter.com/docs/twitter-ids-json-and-snowflake
符号なし64ビット整数型の範囲は、8バイトで表され、データ範囲は0〜18,446,744,073,709,551,615である必要があります。
私はC++MongoDBドライバーを使用していますが、 BSONArrayBuilderクラスのappend member関数には、unsigned long longのオーバーロードはなく、longlongのみがあります。
これは、タイプ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に文字列を使用したくありません。