В настоящее время я бегу это в обработчике HTTP:Streaming BSON-> JSON HTTP ответ в Go?
err := mongoCollection.Find(bson.M{"name": vars["name"]}).One(&result)
data, err := json.Marshal(result)
w.Write(data)
Как я могу начать служить результат до того, как полные данные BSON в?
Редактировать: ответ должен превышать расширение mgo
и перейти на bson
. mgo
Насколько я могу судить, будут служить только полные документы, если я не ошибаюсь. У меня есть один - возможно большой документ, как показывает мой пример кода.
Это странно; не http://golang.org/pkg/encoding/json/#NewDecoder потокового JSON-декодера? – chx
@chx Да, это полупотоковый декодер в том смысле, что входные байты потребляются в кусках. Однако он не передает свой результат, результирующий документ, в куски. Вывод хранится 'Decoder.Decode (v interface {}) error' в структуру результата в одном вызове. Вам нужно что-то вроде 'bson.Decoder.NextPart() DocPart', который вы можете передать в' json.Encoder.WritePart (p DocPart) 'one' DocPart' за раз, поэтому полный 'v интерфейс {}' никогда не строится , – Sean