Мне нужно передать запрос 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 }}}