Chcę przechowywać numery typu unsigned long long (uint64_t) w dokumencie MongoDB, jak to zrobić?Jak przechowywać niepodpisane długo długie (uint64_t) wartości w dokumencie MongoDB?
muszę używać unsigned long long ponieważ używam API Twittera, który wykorzystuje 64-bitowe liczby całkowite bez znaku https://dev.twitter.com/docs/twitter-ids-json-and-snowflake
Zasięg do 64-bitowych bez znaku typu integralnego należy represended przez 8 bajtów iz danymi zakres od 0 do 18 446 744 070 709 551 615.
Używam funkcji C++ MongoDB driver, a funkcja dołączania członka klasy BSONArrayBuilder nie ma przeciążenia dla niepodpisanej długiej długości, tylko przez długi czas.
Oto błąd G ++ 4.7.2 wyrzuca z siebie, gdy próbuję zadzwonić arrayBuilder.append (ID), z identyfikatorem typu 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)
- wiem, że BSON specification został zdefiniowany jako Int64 8 bajtów (64-bitowa ze znakiem liczba całkowita).
- NIE chcę używać ciągów do identyfikatora.
@BadDesign Wartości te pójdą ujemna, gdy obsady (aw DB), ale tak długo, jak odsyłasz je do 'uint64_t' gdy czytasz z powrotem, działa. – JohnnyHK
To jest naprawdę najlepsze rozwiązanie, o ile nie chcesz, aby Mongo wykonywał jakiekolwiek obliczenia na tych wartościach. – bchurchill
Dziękuję bardzo @JohnnyHK! – cmcromance