Трябва да прехвърля MongoDB заявка към друга система. Поради тази причина бих искал да използвам MongoDB Extended JSON. Трябва да направя това най-вече защото използвам сравнения на дати в моите заявки.
И така, ядрото на проблема е, че трябва да прехвърля MongoDB заявка, която е генерирана в node.js бек-енд, към друг бек-енд, написан в Go език.
Интуитивно най-очевидният формат за изпращане на тази заявка чрез REST е JSON. Но заявките на MongoDB не са точно JSON, а BSON, който съдържа специални конструкции за дати.
И така, идеята е да конвертирате заявките в JSON, като използвате MongoDB Extended JSON като форма на представяне на специалните конструкции. След някои тестове е ясно, че тези заявки не работят. Както обвивката на MongoDB, така и заявките, изпратени чрез node.js, се нуждаят от специалните ISODate
или new Date
конструкции.
И накрая, действителният въпрос: има ли функции за кодиране/декодиране от JSON в BSON, като се вземе предвид MongoDB Extended JSON, както на JavaScript (node.js), така и на език Go?
Актуализации
Node.js пакет за кодиране
Очевидно има node.js пакет, който анализира и стрингифицира BSON/JSON. И така, половината от проблема ми е разрешен. Чудя се дали има нещо подобно на езика Go.
Примерна заявка
Например следната заявка е в нормален BSON:
{ Tmin: { $gt: ISODate("2006-01-01T23:00:00.000Z") } }
Преведено в MongoDB Extended JSON, става:
{ "Tmin": { "$gt" : { "$date" : 1136156400000 }}}