Adds an unwind stage to deconstruct an array
        :param path: Field path to an array field
        :param include_array_index: The name of a new field to hold the array index of the element.
        :param preserve_null_and_empty_arrays:
            If true, if the path is null, missing, or an empty array, $unwind outputs the document.
            If false, $unwind does not output a document if the path is null, missing, or an empty array.
        :return: The current object

def unwind(self, path, include_array_index=None, preserve_null_and_empty_arrays=False):
        """
        Adds an unwind stage to deconstruct an array
        :param path: Field path to an array field
        :param include_array_index: The name of a new field to hold the array index of the element.
        :param preserve_null_and_empty_arrays:
            If true, if the path is null, missing, or an empty array, $unwind outputs the document.
            If false, $unwind does not output a document if the path is null, missing, or an empty array.
        :return: The current object
        """
        unwind_query = {}
        unwind_query['$unwind'] = path if path[0] == '$' else '$' + path

        if include_array_index:
            unwind_query['includeArrayIndex'] = include_array_index
        if preserve_null_and_empty_arrays:
            unwind_query['preserveNullAndEmptyArrays'] = True
        self._q.append(unwind_query)
        return self