@classmethod
def replace_by_example(cls, collection, example_data, new_value,
    wait_for_sync=None, limit=None):
    """
            This will find all documents in the collection that match the specified example object,
            and replace the entire document body with the new value specified. Note that document
            meta-attributes such as _id, _key, _from, _to etc. cannot be replaced.

            Note: the limit attribute is not supported on sharded collections. Using it will result in an error.
            The options attributes waitForSync and limit can given yet without an ecapsulation into a json object.
            But this may be deprecated in future versions of arango

            Returns result dict of the request.

            :param collection Collection instance
            :param example_data An example document that all collection documents are compared against.
            :param new_value The replacement document that will get inserted in place of the "old" documents.

            :param wait_for_sync  if set to true, then all removal operations will instantly be synchronised to disk.
            If this is not specified, then the collection's default sync behavior will be applied.

            :param limit an optional value that determines how many documents to replace at most. If limit is
            specified but is less than the number of documents in the collection, it is undefined which of the
            documents will be replaced.

            :returns dict
        """
    kwargs = {'newValue': new_value, 'options': {'waitForSync':
        wait_for_sync, 'limit': limit}}
    return cls._construct_query(name='replace-by-example', collection=
        collection, example=example_data, result=False, **kwargs)
