# bson_iter_document()

## Synopsis

    #define BSON_ITER_HOLDS_DOCUMENT(iter) \
       (bson_iter_type ((iter)) == BSON_TYPE_DOCUMENT)

    void
    bson_iter_document (const bson_iter_t *iter,
                        uint32_t *document_len,
                        const uint8_t **document);

## Parameters

- `iter`: A bson_iter_t.

- `document_len`: A location for the length of the document in bytes.

- `document`: A location for the document buffer.

## Description

The `bson_iter_document()` function shall retrieve the raw buffer of a sub-document from `iter`. `iter` MUST be on an element that is of type BSON_TYPE_DOCUMENT. This can be verified with bson_iter_type() or the `BSON_ITER_HOLDS_DOCUMENT()` macro.